Entity Framework 経由でリモート データベースに接続する ASP.NET Web アプリケーション プロジェクトがあります。デバッグ中 (例: ローカル コンピューターでプロジェクトを実行中)、データベースへの IP アドレスは、リリース中 (例: プロジェクトを Web サーバーにアップロードしてブラウザーから実行した後) とは異なります。これまで、私は常に Web.config ファイルのデータベース接続文字列を手動で変更して、2 つを切り替えていました (基本的には、接続文字列を 1 つは 'Debug'、もう 1 つは 'Release' という名前で、デプロイするたびに名前を交換する必要がありました)。 )。
ここで、変更された接続文字列を Web.Release.config バージョンに配置するWeb.config Transformation Syntaxを介して、これを自動的に実行できるようにする必要があることに気付きました。その後、リリース構成で DLL をビルドするときにそれを使用する必要があります。 .
しかし、それは私にはうまくいかないようです...
これは、通常の Web.config ファイル (ローカルで使用するためのデバッグ接続文字列を保持する) の関連部分です。
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<!-- Debug connection string. Release connection string is in Web.Release.config file -->
<add name="DatabaseEntities" connectionString="A" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
以下は Web.Release.config ファイルです。例によれば、DLL がリリース モードの場合、'DatabaseEntities' 接続文字列 "A" を "B" に置き換える必要があります。
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!-- Replace the DatabaseEntities connection string with the Release version (local IP address) -->
<connectionStrings>
<add name="DatabaseEntities"
connectionString="B"
xdt:Transform="Replace" xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
(明らかに、「A」と「B」は実際の接続文字列の単なるプレースホルダーです)
アプリケーションをデバッグすると (たとえば、F5 キーを押すだけ)、既定の Web.config が使用され、データベースにアクセスできます。次に、構成マネージャーを使用してビルド構成をリリースに変更します。ソリューション内のすべてのプロジェクトは、リリース構成に設定されています。次に、ソリューションをビルドします (ビルドのみ、または完全なリビルド (例: クリーン、リビルド) を介して)。新しく構築した DLL と Web.config および Web.Release.config ファイルを Web サーバーにアップロードします。データベースにアクセスしようとすると、デバッグ IP アドレスを介してデータベースにアクセスしようとします。したがって、それを見つけることができません...
Web.Release.config ファイルが完全に無視されているか、少なくとも接続文字列が置き換えられていないようです。
私は何を間違っていますか?変換構文が間違っていますか? リリース モードでアプリケーションを正しくビルドしていませんか?