Как получить физическое местоположение веб-приложения ASP.NET, не используя HttpContext. Текущий?

Я имел требование настраивать log4net на основе файла относительно физического местоположения под управлением веб-приложения ASP.NET. Нам нравится запускать регистратор как можно раньше, таким образом, Application_Start кажется надлежащим местом. В IIS6 это хорошо работает и работало целую вечность, но теперь мы переместились в IIS7, и это не будет больше работать:

string absolutePath = HttpContext.Current.Request.PhysicalApplicationPath;

потому что HttpContext. Текущий не доступно во многих global.asax (Приложение, Сессия) события. Это - старые новости, все мы знаем, что они повышают теперь печально известный Запрос, не доступно по этой ошибке контекста. Мы не хотим пятиться к Классическому Режиму.

Теперь, вопрос прост: без использования HttpContext, действительно ли возможно найти физическое местоположение в настоящее время рабочего экземпляра веб-приложения?

7
задан Abel 11 June 2010 в 20:25
поделиться

2 ответа

Try HttpRuntime.AppDomainAppPath. Для получения дополнительной информации читайте Интегрированный режим IIS7: Request is not available in this context exception in Application_Start posted by Mike Volodarsky.

14
ответ дан 6 December 2019 в 15:18
поделиться

В качестве альтернативного ответа на свой вопрос я хотел бы добавить, что Server.MapPath () также работает во время события Application_Start . Тогда путь к домену приложения будет равен Server.MapPath ("~") , но он удобнее для отображения относительных путей, снимая бремя конкатенации (для чего изначально был предназначен MapPath).

0
ответ дан 6 December 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: