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="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"]

возвращает ноль (при отладке).

Я попытался добавить xdt:Transform="Вставить", например

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

Есть идеи?

6 ответов

Решение

Хорошо, я понял это.

Ответ здесь: Как я могу использовать Web.debug.config на встроенном сервере отладчика visual studio?

Таким образом, файлы конфигурации объединяются только при публикации, а не при работе на локальном сервере. Довольно глупое IMO, когда еще вы будете использовать Web.Debug.config?

Я сделаю так, как предлагается здесь: Используйте преобразование Visual Studio web.config для отладки.

и просто иметь Web.config в качестве моего файла конфигурации отладки по умолчанию, а затем иметь релиз для при выпуске. Не могу видеть использование для Web.Debug.config как этот пункт.

Тем не менее, это раздражает, потому что большинство моих настроек я хочу настроить в одну сторону для всех сред, но при разработке (например, customErrors On). Это означает, что я должен установить их в Web.config для отладки, а затем во всех других моих средах изменить их.

Спасибо всем за отзывы.

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

Я узнал это,

сначала вы добавите записи настроек приложения в appSetting of the web.Config с пустыми значениями или с отладочными значениями

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

затем вы добавляете то же самое с различными значениями в web.release.config, но добавляете часть преобразования

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

Затем, когда вы публикуете сайт в режиме выпуска, вы получаете значения выпуска. Вы также можете добавить то же самое в конфигурацию отладки, а затем опубликовать в конфигурации отладки с другими значениями.

У меня никогда не было так, чтобы не было ключа в файле по умолчанию 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)"/>

Не могли бы вы опубликовать все ваши web.configs? По умолчанию, отладка и выпуск? Один из способов проверить, работает ли он, может быть, установить что-то вроде разных строк подключения для отладки и выпуска и проверить, какой из них он использует, когда ваше приложение работает.

Вы отлаживаете в режиме релиза? На панели инструментов рядом с зеленой стрелкой, используемой для начала отладки, вы можете установить режим, убедитесь, что он не выпущен.

Другие вопросы по тегам