如何将虚拟路径映射到物理路径?
我知道我可以通过HostingEnvironment(Microsoft.AspNet.Hosting命名空间)获取WebRoot。
我需要根据在我的Web应用程序中的IIS中创建的虚拟路径获取物理路径。 在IIS中,网站根目录指向我发布的网站的wwwroot,并且在IIS中添加了一个虚拟目录 ,指向我的wwwroot之外的文件夹。 我希望我能够获得该虚拟目录的物理路径。 在MVC 5或更早版本中,我可以使用HostingEnvironment.MapPath(System.Web命名空间)或Server.MapPath,我应该在MVC 6中做什么?
编辑:
它不是虚拟路径,而是IIS中添加的虚拟目录。 我希望我能够获得该虚拟目录的物理路径。 我认为虚拟目录是IIS的一个特殊function,它看起来像一个完整虚拟路径的子路径,但可以是物理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(); }
在Azure Web Apps上,您会发现wwwroot
位于不同的位置:
所有源代码都被复制到D:/Home/site/approot/src/{WebsiteName}
但wwwroot
除外。 IApplicationEnvironment.ApplicationBasePath
指向此处。
wwwroot
进入D:/Home/site/wwwroot
。 IHostingEnvironment.WebRootPath
指向此处。
它仍然无法与IIS虚拟目录一起使用。 IHostingEnvironment
接口上有一个WebRootFileProvider
属性,它为IFileProvider
提供了GetFileInfo(string subpath)
。 我读了代码 ,发现subpath
是物理subpath
,而不是虚拟subpath
。
显然,在自托管设置中,没有IIS。 如果您依赖IIS并且真的必须这样做,那么您可能必须引用System.Web。
HTH。
上述就是C#学习教程:如何将虚拟路径映射到物理路径?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/998869.html