web-dev-qa-db-ja.com

ASP.NET MVC3:アプリのデバッグとリリースの設定が機能しない

デバッグとリリースのweb.configアプリの設定が正しく読み取られません。

Web.config:

<appSettings>
 <add key="webpages:Version" value="1.0.0.0"/>
 <add key="ClientValidationEnabled" value="true"/>
 <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>

Web.Debug.config

<appSettings>
    <add key="ErrorEmailAddress" value="[email protected]" />
    <add key="TestModeEmailAddress" value="[email protected]" />
</appSettings>

Web.Release.config

<appSettings>
    <add key="ErrorEmailAddress" value="[email protected]" />
</appSettings>

ただし、次のように呼び出します。

WebConfigurationManager.AppSettings["ErrorEmailAddress"]

nullを返します(デバッグ時)。

私はxdt:Transform = "Insert"を追加してみました。

<add key="ErrorEmailAddress" value="[email protected]" xdt:Transform="Insert" />

何か案は?

27
Alistair

わかりました。

ここで回答: 組み込みのVisual StudioデバッガサーバーでWeb.debug.configを使用するにはどうすればよいですか?

したがって、構成ファイルは、公開時にのみ結合され、ローカルサーバーに対して実行されている場合には結合されません。かなり愚かなIMOですが、他にWeb.Debug.configを使用するのはいつでしょうか。

ここで提案されているとおりに行います: デバッグにはVisual Studio web.config変換を使用します

そして、デフォルトのデバッグ構成ファイルとしてWeb.configを用意し、リリース時にリリースします。この時点では、Web.Debug.configの使用を確認できません。

それでも、これは面倒です。私の設定のほとんどは、開発時以外のすべての環境に対して一方向に設定したいためです(たとえば、customErrors On)。これは、デバッグのためにWeb.configでそれらを設定する必要があることを意味し、他のすべての環境設定でそれらを変更します。

回答ありがとうございます。

47
Alistair
<!-- Web.Config -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings configSource="AppSettings.config" />
</configuration>

<!-- AppSettings.config -->
<appSettings>
<add key="MyDoe" value="Arnold" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
</appSettings>

<!-- Web.Release.Config -->
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.Microsoft.com/XML-Document-Transform">
<compilation xdt:Transform="RemoveAttributes(debug)" />
<appSettings>
<add key="MyDoe" value="John" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
</appSettings>
</configuration>
10
Bjoern

私はそれを見つけました、

最初に、web.ConfigのappSettingに、空の値またはデバッグ値を持つアプリ設定エントリを追加します

<add key="Environment" value="Localhost" />

次に、同じものを異なる値でweb.release.configに追加しますが、変換部分を追加します

 <add key="Environment" value="DifferentValue"  xdt:Transform="Replace" xdt:Locator="Match(key)"/>

次に、リリースモードでWebサイトを公開すると、リリースの値が取得されます。これをデバッグ構成に追加して、異なる値でデバッグ構成で公開することもできます。

7
Mustafa Magdy

私は、デフォルトのweb.configにキーがないことで動作することはありません。

これは私にとってはうまくいきます:

Web.config

<add key="Environment" value="Localhost" />

Web.Debug.config

<add key="Environment" value="Development" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>

Web.Release.config

<add key="Environment" value="Production" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
2
RPM1984

すべてのweb.configsを投稿できますか?デフォルト、デバッグ、リリース?機能しているかどうかをテストする1つの方法は、デバッグとリリースに異なる接続文字列のようなものを設定し、アプリの実行中に使用するものを確認することです。

1
mymex1

リリースモードでデバッグしていますか?デバッグを開始するために使用される緑の矢印の横のツールバーで、モードを設定できます。リリースされていないことを確認してください。

0
m4tt1mus