如何解析相对于ASP.NET MVC 4应用程序根目录的路径?

akn*_*ds1 47 c# asp.net-mvc

如何解析相对于ASP.NET MVC 4应用程序的根目录的路径?也就是说,我想从控制器操作中打开属于应用程序的文件,引用方式如下~/Data/data.html.这些路径通常在中指定Web.config.

编辑:

通过'resolve',我的意思是将相对于应用程序根目录的路径转换为绝对路径,.eg ~/Data/data.htmlC:\App\Data\Data.html.

Nat*_*ins 81

要获得绝对路径,请使用:

String path = HttpContext.Current.Server.MapPath("~/Data/data.html");
Run Code Online (Sandbox Code Playgroud)

编辑:

.Current从上面的行中删除Controller的Context .通过单独使用HttpContext它更容易测试,因为它基于Controller的Context因此更加本地化.

我现在意识到我不喜欢如何Server.MapPath工作(内部最终调用HostingEnvironment.MapPath)所以我现在建议总是使用HostingEnvironment.MapPath因为它的静态而不依赖于上下文,除非你当然想要...


Mic*_*rry 60

当我需要一个控制器之外的路径时,我发现此代码很有用,例如当我在Global.asax.cs中初始化组件时:

HostingEnvironment.MapPath("~/Data/data.html")
Run Code Online (Sandbox Code Playgroud)

  • HostingEnvironment.MapPath是一个更好的答案.当您在http请求的上下文之外执行代码时,HttpContext.Current为null并且您的代码崩溃.HostingEnvironment.MapPath始终有效. (2认同)

Ott*_*lis 14

只需使用以下内容

Server.MapPath("~/Data/data.html")
Run Code Online (Sandbox Code Playgroud)