我知道我可以通过HostingEnvironment(Microsoft.AspNet.Hosting命名空间)获取WebRoot.
我需要根据在我的Web应用程序中的IIS中创建的虚拟路径获取物理路径.在IIS中,网站根目录指向我发布的网站的wwwroot,并且在IIS中添加了一个虚拟目录,指向我的wwwroot之外的文件夹.我希望我能够获得该虚拟目录的物理路径.在MVC 5或更早版本中,我可以使用HostingEnvironment.MapPath(System.Web命名空间)或Server.MapPath,我应该在MVC 6中做什么?
编辑:
它不是虚拟路径,而是IIS中添加的虚拟目录.我希望我能够获得该虚拟目录的物理路径.我认为虚拟目录是IIS的一个特殊功能,它看起来像一个完整虚拟路径的子路径,但可以是物理Web根文件夹之外的文件夹.
2015年10月4日
请参阅ASP.NET 5 Hosting repo中的这个问题,到目前为止,我们似乎无法获得IIS中虚拟目录的物理路径.
您可以使用IApplicationEnvironment包含该属性的内容ApplicationBasePath
private readonly IApplicationEnvironment _appEnvironment;
public HomeController(IApplicationEnvironment appEnvironment)
{
_appEnvironment = appEnvironment;
}
public IActionResult Index()
{
var rootPath = _appEnvironment.ApplicationBasePath;
return View();
}
Run Code Online (Sandbox Code Playgroud)
在Azure Web Apps上,您会发现wwwroot它位于不同的位置:
所有源代码都被复制到D:/Home/site/approot/src/{WebsiteName}除了wwwroot.IApplicationEnvironment.ApplicationBasePath点在这里.
在wwwroot中去D:/Home/site/wwwroot.IHostingEnvironment.WebRootPath点在这里.
它仍然无法与IIS虚拟目录一起使用.界面WebRootFileProvider上有一个属性IHostingEnvironment,提供了IFileProvider类似的方法GetFileInfo(string subpath).我读了代码,发现subpath是一个物理代码,而不是虚拟代码.
显然,在自托管设置中,没有IIS.如果你依赖IIS并且真的必须这样做,你可能必须引用System.Web.
HTH.
| 归档时间: |
|
| 查看次数: |
5935 次 |
| 最近记录: |