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