Как я могу использовать Server.MapPath() из global.asax?

Мне нужно использовать Server.MapPath() объединить некоторые пути файлов, которые я храню в web.config,

Тем не менее, так как Server.MapPath() опирается на текущий HttpContext (я думаю), я не могу это сделать. При попытке использовать метод, даже если он "доступен", я получаю следующее исключение:

Работа сервера недоступна в этом контексте.

Есть ли другой метод, который может сопоставить корневую директорию сети, такую ​​как ~/App_Data/ на полный физический путь, такой как C:\inetpub\wwwroot\project\App_data\?

4 ответа

Решение

Вы можете попробовать System.Web.Hosting.HostingEnvironment.MapPath ().

HttpContext не требуется.

Использование AppDomain.CurrentDomain.BaseDirectory так как Context может вернуть ноль!

Когда в Global.asax, используйте объект контекста:

context.Server.mappath ()

Контекст позволяет также получить доступ к коллекции сеансов, объекту запроса, объекту ответа. Очень полезно, когда вы хотите регистрировать ошибки, например

Вы можете попробовать HttpContext.Current.Server.MapPath("/") - это то, как я упоминал ранее в классах.

Другие вопросы по тегам