Подтвердить что ты не робот

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" />

Любые идеи?

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

Ответ 3

Я нашел это,

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

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

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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