Приложение MVC3 перезапускает каждую загрузку - PullRequest
0 голосов
/ 07 июня 2011

Я делаю приложение MVC 3, работающее на IIS 7.5, которое использует EntityFramework для доступа к большой базе данных. Платформа, которая требуется моей компании для доступа к базе данных, инициализирует соединения и устанавливает некоторые проверки потока и проверки безопасности - процесс, который занимает около 30 секунд. Это должно запускаться только один раз при запуске приложения, но это происходит при каждой загрузке страницы.

Способ, которым я настроил его сейчас, заключается в том, чтобы в global.asax был статический метод, чтобы проверить словарь HttpContext.Current.Application, чтобы увидеть, был ли установлен ключ для класса Context, вернуть Context, если так, иначе инициализируйте контекст, затем верните его. При каждой загрузке страницы словарь пуст, поэтому необходимо повторно инициализировать контекст (как проверено в Visual Studio 2010).

Прежде чем он вызывал метод инициализации в методе Application_Start в global.asax, и это попадало и на каждую загрузку страницы.

Страницы по-прежнему загружаются вечно, даже если Visual Studio не работает.

Что может быть причиной сброса приложения при каждой загрузке страницы?

1 Ответ

1 голос
/ 07 июня 2011

Вы можете получить причину для перезапуска в Application_End с этим кодом:

  HttpRuntime runtime = (HttpRuntime)typeof(System.Web.HttpRuntime).InvokeMember("_theRuntime", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField, null, null, null);

  string shutDownMessage = "";

  if (runtime != null)
  {
    shutDownMessage = Environment.NewLine + "Shutdown: " +
                      (string)runtime.GetType().InvokeMember("_shutDownMessage", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null) + 
                      Environment.NewLine + "Stack: " + Environment.NewLine +
                      (string)runtime.GetType().InvokeMember("_shutDownStack", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...