Server.MapPath(".") Server.MapPath("./") Server.MapPath("/") Server.MapPath用法详解

本文介绍在ASP.NET中使用Server.MapPath方法解析相对路径到物理路径的过程。通过实例展示不同相对路径对应的物理路径,帮助理解网站及虚拟目录结构。
  • 已知条件:

站点 myWebSite 的物理路径是 c:/inetpub/wwwroot 。

站点 myWebSite 中有虚拟目录 V1,      V1 的物理路径是 D:/AspTest。

虚拟目录V1 下面具有虚拟目录 V2,         V2 的物理路径是 E:/system1。

虚拟目录V2 下面具有目录 Data,                 其物理路径是 E:/system1/Data。

目录 F1 下面具有文件 default.aspx。

 

那么在default.aspx 调用:

  •  Server.MapPath("../")               结果是   E:/system1
  •  Server.MapPath("../../"),         结果是   D:/AspTest
  •  Server.MapPath("../../../"),      结果是   C:/inetpub/wwwroot
  •  Server.MapPath("../../../../"),   结果将出错,因为已经退到站点根目录以上了。
  •  Server.MapPath(".")                  结果是   E:/system1/Data     点表示当前所在目录
  •  Server.MapPath("./")                 结果是   E:/system1/Data/
  •  Server.MapPath("Page2.aspx")   结果是   E:/system1/Data/Page2.aspx.   Page2.aspx不定要实际存在。
  •  Server.MapPath("/ ") 或 Server.MapPath("/")    结果是   C:/inetpub/wwwroot , 得到的并不是虚拟目录根目录 所在的物理路径,而是站点根目录 所在的物理路径。

Reference:
在ASP.NET Core中,由于没有直接的`Server.MapPath`方法,可使用`IWebHostEnvironment`服务来实现类似功能。`IWebHostEnvironment`提供了对应用程序环境信息的访问,其中`ContentRootPath`和`WebRootPath`属性可用来获取物理路径。 以下是一个示例代码,展示了如何在ASP.NET Core中使用`IWebHostEnvironment`来实现类似`Server.MapPath`的功能: ```csharp using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Hosting; public class HomeController : Controller { private readonly IWebHostEnvironment _hostingEnvironment; public HomeController(IWebHostEnvironment hostingEnvironment) { _hostingEnvironment = hostingEnvironment; } public IActionResult Index() { // 假设要获取相对路径 "wwwroot/images/test.jpg" 的物理路径 string relativePath = "wwwroot/images/test.jpg"; string physicalPath = System.IO.Path.Combine(_hostingEnvironment.WebRootPath, relativePath.Replace("wwwroot/", "")); // 若要获取内容根目录下的相对路径的物理路径 string contentRelativePath = "App_Data/test.txt"; string contentPhysicalPath = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, contentRelativePath); return Ok($"WebRoot物理路径: {physicalPath}, ContentRoot物理路径: {contentPhysicalPath}"); } } ``` 在上述代码中,`IWebHostEnvironment`通过依赖注入的方式被注入到`HomeController`中。`WebRootPath`用于获取`wwwroot`目录的物理路径,`ContentRootPath`用于获取应用程序内容根目录的物理路径。通过`System.IO.Path.Combine`方法,可以将相对路径与根路径组合成完整的物理路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值