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

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

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

В этом контексте операция сервера недоступна.

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

Ответ 2

Используйте AppDomain.CurrentDomain.BaseDirectory, потому что Context может возвращать null!

Ответ 3

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

context.Server.mappath()

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

Ответ 4

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