我有一些在ASP.NET MVC Web应用程序中没有HttpContext的情况下运行的进程。此过程需要能够确定用于读取/写入数据的应用程序的Contents目录的物理路径。但是,由于它没有HttpContext,我不会使用像Server.MapPath这样的花哨的东西。建议?
答案 0 :(得分:13)
在网站中,最好使用HttpRuntime.AppDomainAppPath
,因为在执行路径的某些时刻(即网站启动时),没有HttpContext.Current
可用。
另见this post。
答案 1 :(得分:4)
执行此操作的最佳方法是使用AppDomain.BaseDirectory
属性。只要您不使用自定义应用程序域,它就会指向您的根应用程序目录。换一种说法;这两个字符串是相同的:
string mapUsingAppDomain = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Contents");
string mapUsingServer = HttpContext.Current.Server.MapPath("~/Contents");