Как я могу использовать Server.MapPath () из global.asax? - PullRequest
117 голосов
/ 01 июня 2009

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

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

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

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

Ответы [ 4 ]

283 голосов
/ 01 июня 2009

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

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

4 голосов
/ 02 февраля 2010

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

1 голос
/ 02 июня 2009

В Global.asax используйте контекст объект:

context.Server.mappath ()

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

0 голосов
/ 01 июня 2009

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

...