Server.MapPath в Global.asax - PullRequest
       40

Server.MapPath в Global.asax

1 голос
/ 08 января 2012

В событии Application_Start в global.asax.cs я добавил некоторый код инициализации.Этот код запускается в порожденном потоке (создан с использованием нового Thread ()).Код инициализации использует Server.MapPath для получения физического пути к файлу.Однако много раз я получаю сообщение об ошибке в файлах журнала: Работа сервера не доступна в этом контексте В любом случае я ловлю исключение.Инициализация не критична, так как даже если она не удастся, для меня это не будет проблемой.У меня вопрос:

  1. Почему я получаю сообщение об ошибке «Сервер недоступен?»
  2. Может ли исключение обработано вызвать какие-либо проблемы, такие как недопустимое состояние представления при нормальном выполненииприложение.Мы заметили много из них - Invalid Viewstate позже в журналах.Я верю, что не может.Пожалуйста, поправьте меня, если я ошибаюсь.

Спасибо

Викас

1 Ответ

1 голос
/ 08 января 2012

На объект сервера ссылаются через HttpContext.Current, т.е. относительно текущего запроса.Я подозреваю, что он недоступен с Application_Start, поскольку в этот момент нет запроса.Несмотря на это, он не будет надежно доступен в отдельном потоке, поскольку потоки работают независимо друг от друга, поэтому любой запрос мог начаться или завершиться до того, как ваш поток попытается получить к нему доступ.

Попробуйте вместо этого использовать HostingEnvironment.MapPath() какэто статический метод.

...