Как вы определяете физический путь к файлу без HttpContext? - PullRequest
11 голосов
/ 23 августа 2010

У меня есть некоторые процессы, которые выполняются без HttpContext в веб-приложении ASP.NET MVC.Этот процесс должен быть в состоянии определить физический путь к каталогу содержимого приложения для чтения / записи данных.Но, поскольку он не содержит HttpContext, я не могу использовать такие причудливые вещи, как Server.MapPath и тому подобное.Предложения?

Ответы [ 2 ]

13 голосов
/ 23 августа 2010

На веб-сайте лучше всего использовать HttpRuntime.AppDomainAppPath, поскольку в определенные моменты пути выполнения (т. Е. При запуске сайта) HttpContext.Current недоступно.

Смотрите также этот пост .

4 голосов
/ 23 августа 2010

Лучший способ сделать это - использовать свойство AppDomain.BaseDirectory. Пока вы не возитесь с пользовательскими доменами приложений, он будет указывать на корневой каталог приложений. Другими словами; эти две строки будут одинаковыми:

string mapUsingAppDomain = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Contents");
string mapUsingServer = HttpContext.Current.Server.MapPath("~/Contents");
...