由于Microsoft不是MVC,所以不能这样做:
var a = Request.MapPath("~");也不是这个
var b = Server.MapPath("~");因为它们位于System.Web命名空间下,而不是System.Web.Http命名空间下。
那么,如何在Web中计算出相对的服务器路径呢?
我以前在MVC中做过这样的事情
var myFile = Request.MapPath("~/Content/pics/" + filename);这将给我磁盘上的绝对路径:
"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"发布于 2013-05-15 05:01:00
您可以在HostingEnvironment.MapPath对象(例如来自静态方法的System.Web对象)不可用的任何上下文中使用HttpContext.Current。
var mappedPath = System.Web.Hosting.HostingEnvironment.MapPath("~/SomePath");发布于 2013-11-14 17:25:44
string root = HttpContext.Current.Server.MapPath("~/App_Data");发布于 2015-05-12 16:19:48
除了那些无意中遇到这种情况的人之外,在使用HostingEnvironment调用时运行测试级别的一种很好的方法是,如果访问例如UNC共享:\示例\映射到~/ those /您可以执行此操作以避免issues问题:
#if DEBUG
var fs = new FileStream(@"\\example\file",FileMode.Open, FileAccess.Read);
#else
var fs = new FileStream(HostingEnvironment.MapPath("~/example/file"), FileMode.Open, FileAccess.Read);
#endif如果您有在文件上进行本地测试的权限,但在生产过程中需要使用env映射,我发现这很有帮助。
https://stackoverflow.com/questions/16557122
复制相似问题