У меня есть некоторые процессы, которые запускаются без HttpContext в веб-приложении ASP.NET MVC. Этот процесс должен быть способен определить физический путь к каталогу содержимого приложения для чтения/записи данных. Но, поскольку он не имеет HttpContext, я не могу использовать такие причудливые вещи, как Server.MapPath и т.д. Предложения?
Как вы определяете физический путь файла без HttpContext?
Ответ 1
На веб-сайте лучше использовать HttpRuntime.AppDomainAppPath
, потому что в определенные моменты пути выполнения (т.е. когда сайт начинается вверх), там нет HttpContext.Current
.
См. также этот пост.
Ответ 2
Лучший способ сделать это - использовать свойство AppDomain.BaseDirectory
. Пока вы не возитесь с пользовательскими доменами приложений, он будет указывать на корневой каталог приложений. Другими словами; эти две строки будут одинаковыми:
string mapUsingAppDomain = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Contents");
string mapUsingServer = HttpContext.Current.Server.MapPath("~/Contents");