ASP.NET MVC3:调试和发布应用程序设置不起作用

时间:2011-06-02 00:10:00

标签: asp.net-mvc web-config

我的调试和发布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="developerEmail@email.com" />
    <add key="TestModeEmailAddress" value="developerEmail@email.com" />
</appSettings>

Web.Release.config

<appSettings>
    <add key="ErrorEmailAddress" value="prodErrorEmail@email.com" />
</appSettings>

但是,请致电:

WebConfigurationManager.AppSettings["ErrorEmailAddress"]

返回null(调试时)。

我尝试过添加xdt:Transform =“Insert”,例如

<add key="ErrorEmailAddress" value="prodErroEmail@email.com" xdt:Transform="Insert" />

有什么想法吗?

6 个答案:

答案 0 :(得分:47)

好的我明白了。

在这里回答:How can I use Web.debug.config in the built-in visual studio debugger server?

因此配置文件仅在发布时合并,而不是在对本地服务器运行时合并。相当愚蠢的IMO,你还有什么时候会使用Web.Debug.config?

我将按照此处的建议进行操作:Use Visual Studio web.config transform for debugging

并且只将Web.config作为我的默认调试配置文件,然后在发布时发布。在这一点上看不到Web.Debug.config的用途。

尽管如此,这很烦人,因为我的大部分设置都希望为所有环境设置一种方式,但在开发时(例如customErrors On)。这意味着我必须在Web.config中设置它们以进行调试,然后在我所有其他环境中配置更改它们。

感谢大家的回复。

答案 1 :(得分:9)

<!-- 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>

答案 2 :(得分:6)

我发现了,

首先,您将使用空值或调试值在web.Config的appSetting上添加应用设置条目

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

然后在 web.release.config 上添加相同的值,但添加转换部分

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

然后,当您在发布模式下发布网站时,您将获得发布值,您也可以将其添加到调试配置中,然后在调试配置中使用不同的值发布

答案 3 :(得分:2)

我从来没有在默认的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)"/>

答案 4 :(得分:1)

你可以张贴所有的web.configs吗?默认,调试和发布?测试它是否正常工作的一种方法可能是设置类似于调试和发布的不同连接字符串,并检查它在您的应用程序运行时使用的连接字符串。

答案 5 :(得分:0)

你在发布模式下调试吗?在用于开始调试的绿色箭头旁边的工具栏中,您可以设置一个模式,确保它不在发布时。