微软的Web API:你如何做一个使用Server.Mappath?(Microsoft Web A

2019-09-03 06:43发布

由于微软的Web API不是MVC,你不能做这样的事情:

var a = Request.MapPath("~");

这也

var b = Server.MapPath("~");

因为这些都是下System.Web命名空间,而不是System.Web.Http命名空间。

那么,你如何找出在网页API相对于服务器的路径?
我以前做这样的事情在MVC:

var myFile = Request.MapPath("~/Content/pics/" + filename);

这将使我在磁盘上的绝对路径:

"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"

Answer 1:

您可以使用HostingEnvironment.MapPath在任何情况下,其中System.Web状物体HttpContext.Current不可用(如也从一个静态方法)。

var mappedPath = System.Web.Hosting.HostingEnvironment.MapPath("~/SomePath");

又见是什么和使用Server.Mappath之间HostingEnvironment.MapPath的区别?



Answer 2:

string root = HttpContext.Current.Server.MapPath("~/App_Data");


Answer 3:

顺便说一句那些跨越这个蹒跚一起,一个很好的方式,在使用HostingEnvironment调用运行测试级别,是,如果访问说UNC共享:\例子\映射到〜/例子/你能执行此得到解决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映射一旦投入生产。



Answer 4:

我无法从你提供的背景告诉我们,但如果它是你只需要在应用程序启动做一些事情,你仍然可以使用Server.MapPathWebApiHttpApplication ; 例如在Application_Start()

我只是回答你直接的问题; 已经提到的HostingEnvironment.MapPath()可能是优选的解决方案。



Answer 5:

所选择的答案并没有在我的Web API应用程序。 我不得不使用

System.Web.HttpRuntime.AppDomainAppPath


Answer 6:

你可以尝试这样的:

VAR路径= “〜/图像/ test.png”; System.Web.Hosting.HostingEnvironment.MapPath(@ +路径)



文章来源: Microsoft Web API: How do you do a Server.MapPath?