Переменная Stati c исчезает при утилизации пула приложений - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть устаревшее приложение WCF для поддержки. Существует синглтон, который инициализируется в Application_Start и позже используется в нескольких местах. Например, в Application_BeginRequest.

Упрощенная версия выглядит следующим образом:

protected void Application_Start(object sender, EventArgs e)
{
  ConfigurationValuesProvider.Current = new LegacyWebConfigBasedConfigurationValuesProvider();
}

protected void Application_BeginRequest(object sender, EventArgs e)
{
  ...
  var setting = ConfigurationValuesProvider.Current.Get("SettingKey");
  ...
}

Проблема возникла в одной из производственных сред. После перезапуска первого пула приложений следующий вызов к любой конечной точке завершится неудачей, за исключением того, что ConfigurationValuesProvider.Current не установлено. Я абсолютно уверен, что в коде нет места, где эта переменная stati c переназначается. Я знаю, что при утилизации пула, когда старый домен приложения выгружается, переменные stati c теряют свое значение. Но как звонить на Application_BeginRequest можно раньше, чем Application_Start Я не могу себе представить. Невозможно воспроизвести проблему в других средах.

Хотите знать, что может вызвать такое странное поведение?

ОБНОВЛЕНИЕ : проблема возникает, когда первая конечная точка, вызывается после того, как recycle является конечной точкой net .tcp. Должны ли Application_Start и Application_BeginRequest выполняться, когда мы совершаем вызов к конечной точке, отличной от HTTP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...