因为微软Web API不是MVC,你不能做这样的事情:
var a = Request.MapPath("~");
也不是这
var b = Server.MapPath("~");
因为这些都在体制下。Web命名空间,而不是System.Web.Http命名空间。
那么如何在Web API中找出相对服务器路径呢?我曾经在MVC中做过这样的事情:
var myFile = Request.MapPath("~/Content/pics/" + filename);
这将给我磁盘上的绝对路径:
"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"
顺便说一句,使用HostingEnvironment调用运行测试级别的一个好方法是,如果访问一个映射到~/example/的UNC共享:\example\,你可以执行这个来解决IIS-Express问题:
#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映射,那么这很有帮助。