我知道我可以通过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日
参考this issue in 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(); }