В Visual Studio 2008 - сколько времени пройдет до того, как «web.config» изменится? - PullRequest
2 голосов
/ 04 июня 2009

У меня есть некоторые настройки в файле web.config, которые я хочу переопределить при локальном тестировании приложения ASP.NET на моем компьютере. Основная часть выглядит так:

  <appSettings file="WebAppSettings.config">
    <add key="DEBUG" value ="False"/>
    <add key="PROD" value="TrueInMainConfigFile"/>
  </appSettings>

Теперь в моем локальном "WebAppSettings.config" у меня есть:

<appSettings>
  <remove key="DEBUG"/>
  <remove key="PROD"/>
  <add key="DEBUG" value ="True"/>
  <add key="PROD" value="False"/>
</appSettings>

Я просто изменил значение "PROD" с True на False и сохранил файл. Тем не менее, когда я перестраиваю и запускаю сайт (опять же, на моем локальном компьютере с IIS, а не Cassini), значение System.Configuration.ConfigurationManager.AppSettings ("PROD") по-прежнему возвращает "True" вместо "False".

Иногда позволить этому «сидеть долго» решает эту проблему. Тем не менее, по большей части мне нужно закрыть и снова открыть VS2008, чтобы получить новое значение «take».

Что здесь происходит?

Ответы [ 6 ]

5 голосов
/ 04 июня 2009

Вносили ли вы изменения в файл web.config или WebAppSettings.config? Изменение в файле web.config немедленно перезапускает домен приложения, в результате чего новые значения используются сразу после их запроса. Изменение в WebAppSettings.config ничего не делает.

4 голосов
/ 04 июня 2009

Если вы обновите web.config, следующий сеанс начнется с использованием новых значений. Если вы обновляете вторичный файл, это может быть причиной того, что вы его не видите. Попробуйте изменить что-либо в файле web.config, например добавить пробел и сохранить файл.

2 голосов
/ 04 июня 2009

Изменение в файле web.config занимает:

  • В Visual Studio при следующем запуске (F5)
  • Производство / прямое редактирование - при следующем вызове приложения

Динамическое построение происходит всякий раз, когда система обнаруживает изменение в папке \ bin или в файле конфигурации.

1 голос
/ 04 июня 2009

Если я перезагружаю сайт при работе с IIS, любые изменения немедленно распространяются. Не уверен, что тебе сказать.

0 голосов
/ 04 июня 2009

Изменение web.config перезапускает пул приложений AppDomain, поэтому изменения должны быть видны немедленно.

Вносите ли вы изменения в файл web.config в приложении? Если так, то история другая, потому что web.config кешируется

Итак, у вас есть несколько вариантов

1) Установите этот параметр в другом файле 2) использовать ConfigurationManager.AppSettings ["MyAppSetting"] Я помню, что какая-то версия ConfigurationManager устарела, но есть замена, о да, и вам нужно обновить раздел

Надеюсь, это поможет

0 голосов
/ 04 июня 2009

Сохранение файла Web.config перезапустит приложение и загрузит новые значения. Вы уверены, что изменили нужный файл? Комментарий "с IIS, а не с Cassini)" может означать, что у вас есть опубликованная / отдельная версия в IIS?

Надеюсь, это поможет!

...