asp.net中的n种path
在web服务器端开发中经常会遇到各种不同形式的path,而且经常记不清楚如何获取到某种特定格式,今天抽了点时间把常用的path获取方法与格式做了一个简单的对照表,以备日后查用。
Request获取的信息
Request.AppRelativeCurrentExecutionFilePath ~/SysOption/BillingSetup1.aspx
Request.ApplicationPath /
Request.CurrentExecutionFilePath /SysOption/BillingSetup1.aspx
Request.FilePath /SysOption/BillingSetup1.aspx
Request.Path /SysOption/BillingSetup1.aspx
Request.PathInfo 什么都没有(待测其他用法)
Request.PhysicalApplicationPath D:\VssWorkFolder\British_School_MIS\src\WebSite\
Request.PhysicalPath D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx
Request.UserHostAddress 192.168.1.6
Request.UserHostName 192.168.1.6
Request.Url.ToString() http://192.168.1.6/SysOption/BillingSetup1.aspx?x=d
Request.UrlReferrer 空引用或者跳转源页面地址
Request.ServerVariables集合中获取到的相关信息:
左列是服务器变量名,右侧是值,值是通过Request.ServerVariables[服务器变量名]获取的
APPL_MD_PATH : /LM/W3SVC/894523/Root
APPL_PHYSICAL_PATH : D:\VssWorkFolder\British_School_MIS\src\WebSite\
INSTANCE_META_PATH : /LM/W3SVC/894523
LOCAL_ADDR : 192.168.1.6
PATH_INFO : /SysOption/BillingSetup1.aspx
PATH_TRANSLATED : D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx
REMOTE_ADDR : 192.168.1.6
REMOTE_HOST : 192.168.1.6
SCRIPT_NAME : /SysOption/BillingSetup1.aspx
SERVER_NAME : 192.168.1.6
URL : /SysOption/BillingSetup1.aspx
Request.ServerVariables是一个很强大的工具,可以帮助我们获取很多client和web宿主的信息,有兴趣的朋友可以通过以下代码看看它到底包含什么信息
path转换
1.转换为服务器端路径(Server.MapPath)
web服务器端开发设计一个有趣的问题就是,地址转换。比如http地址/images/a.txt,如果你想在服务器端通过io读取这个文件,就得有这个文件的“本机地址(形如c:\windows\system32\xx.dll)”,这时Server.MapPath就很有用了
Response.Write(Request.MapPath(Request.Path)); 输出为 D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx
2.转换为http地址(Page.ResolveClientUrl Page.ResolveUrl)
Response.Write(Page.ResolveClientUrl("~/a/a.jpg")); 输出为 ../a/a.jpg
Response.Write(Page.ResolveUrl("~/a/a.jpg")); 输出为 /a/a.jpg
Request获取的信息
Request.AppRelativeCurrentExecutionFilePath ~/SysOption/BillingSetup1.aspx
Request.ApplicationPath /
Request.CurrentExecutionFilePath /SysOption/BillingSetup1.aspx
Request.FilePath /SysOption/BillingSetup1.aspx
Request.Path /SysOption/BillingSetup1.aspx
Request.PathInfo 什么都没有(待测其他用法)
Request.PhysicalApplicationPath D:\VssWorkFolder\British_School_MIS\src\WebSite\
Request.PhysicalPath D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx
Request.UserHostAddress 192.168.1.6
Request.UserHostName 192.168.1.6
Request.Url.ToString() http://192.168.1.6/SysOption/BillingSetup1.aspx?x=d
Request.UrlReferrer 空引用或者跳转源页面地址
Request.ServerVariables集合中获取到的相关信息:
左列是服务器变量名,右侧是值,值是通过Request.ServerVariables[服务器变量名]获取的
APPL_MD_PATH : /LM/W3SVC/894523/Root
APPL_PHYSICAL_PATH : D:\VssWorkFolder\British_School_MIS\src\WebSite\
INSTANCE_META_PATH : /LM/W3SVC/894523
LOCAL_ADDR : 192.168.1.6
PATH_INFO : /SysOption/BillingSetup1.aspx
PATH_TRANSLATED : D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx
REMOTE_ADDR : 192.168.1.6
REMOTE_HOST : 192.168.1.6
SCRIPT_NAME : /SysOption/BillingSetup1.aspx
SERVER_NAME : 192.168.1.6
URL : /SysOption/BillingSetup1.aspx
Request.ServerVariables是一个很强大的工具,可以帮助我们获取很多client和web宿主的信息,有兴趣的朋友可以通过以下代码看看它到底包含什么信息
foreach (string s in Request.ServerVariables)
{
Response.Write(s + " : " + Request.ServerVariables[s] + "<br /><br />");
}
{
Response.Write(s + " : " + Request.ServerVariables[s] + "<br /><br />");
}
path转换
1.转换为服务器端路径(Server.MapPath)
web服务器端开发设计一个有趣的问题就是,地址转换。比如http地址/images/a.txt,如果你想在服务器端通过io读取这个文件,就得有这个文件的“本机地址(形如c:\windows\system32\xx.dll)”,这时Server.MapPath就很有用了
Response.Write(Request.MapPath(Request.Path)); 输出为 D:\VssWorkFolder\British_School_MIS\src\WebSite\SysOption\BillingSetup1.aspx
2.转换为http地址(Page.ResolveClientUrl Page.ResolveUrl)
Response.Write(Page.ResolveClientUrl("~/a/a.jpg")); 输出为 ../a/a.jpg
Response.Write(Page.ResolveUrl("~/a/a.jpg")); 输出为 /a/a.jpg
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App