ConfigurationManager ConnectionStringsはどこで値を取得しますか?
-
04-07-2019 - |
質問
ASP.NETアプリケーションにはweb.configファイルがあります。 web.configファイルには接続文字列があります...
<connectionStrings>
<add name="HRDb" connectionString="xxxxx" providerName="System.Data.SqlClient" />
</connectionStrings>
まだ、ConfigurationManager.ConnectionStringsp["HRDb"]
を使用してこの値を取得すると、新しい接続文字列ではなく、古い接続文字列が取得されます。
ConfigurationManager
が接続文字列値を読み取る場所(web.config以外)はどこですか?
VS.NETからアプリケーションを実行しています(IISにデプロイされていません)。
解決
何がおかしいのかがわかりました。
だから私自身の質問に答えるために... ConfigurationManagerはweb.configからのみ読み取ります。
私の問題は、Visual Studio開発サーバーを使用する代わりに、プロジェクトの実行時にIIS Webサーバーを使用するようにプロジェクトが構成されていたことです。そのため、実際には古いバージョンのアプリケーションを実行していました。ばか。
他のヒント
可能性は低いですが、<!> quot; parent <!> quot;で接続文字列を定義することもできます。現在のフォルダーの上のフォルダー、またはmachine.config内のweb.config。
<clear />
要素の前に<add>
要素を追加してください。
「古い」値はどこに保存されましたか?別の構成ファイルにありますか?構成マネージャーは、構成ファイルからのみプルする必要がありますが、アプリケーションには複数のファイルが存在する場合があります。ビルドプロセスの一部が古いファイルにコピーされますか?
同様の問題がありました。その解決策は、間違ったweb.configを保持していたことです。web.configは、ファイルを追加するときにVisual Studioによって生成されたものです。