Как я могу использовать Server.MapPath() из global.asax?
-
06-09-2019 - |
Вопрос
Мне нужно использовать Server.MapPath()
чтобы объединить пути к некоторым файлам, которые я храню в web.config
.
Однако, поскольку Server.MapPath()
полагается на текущий HttpContext (я думаю), я не могу этого сделать.При попытке использовать метод, даже если он "доступен", я получаю следующее исключение:
Работа сервера в данном контексте недоступна.
Существует ли другой метод, который может сопоставить веб-корневой относительный каталог, такой как ~/App_Data/
к полному физическому пути, такому как C:\inetpub\wwwroot\project\App_data\
?
Решение
Ты мог бы попробовать System.Web.Hosting.Среда хостинга.MapPath().
HttpContext не требуется.
Другие советы
Использование AppDomain.CurrentDomain.BaseDirectory
потому что Context
может вернуть значение null !!
Когда вы находитесь в Global.asax, используйте контекст объект:
контекст.Сервер.mappath()
Контекст позволяет вам также получить доступ к коллекции сеансов, объекту запроса, объекту ответа.Очень полезно, когда вы хотите регистрировать ошибки, например
Вы могли бы попробовать HttpContext.Current.Server.MapPath("/") - именно так я ссылался на него раньше в классах.