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? По умолчанию, отладка и выпуск? Один из способов проверить, работает ли он, может быть, установить что-то вроде разных строк подключения для отладки и выпуска и проверить, какой из них он использует, когда ваше приложение работает.
Вы отлаживаете в режиме релиза? На панели инструментов рядом с зеленой стрелкой, используемой для начала отладки, вы можете установить режим, убедитесь, что он не выпущен.