23

我想获取除当前页面 url 之外的所有 URL 路径,例如:我的 URL 是http://www.MyIpAddress.com/red/green/default.aspx我想获取“ http://www. MyIpAddress.com/red/green/仅限。我怎么能得到。我正在做

string sPath = new Uri(HttpContext.Current.Request.Url.AbsoluteUri).OriginalString; System.Web.HttpContext.Current.Request.Url.AbsolutePath;
            sPath = sPath.Replace("http://", "");
            System.IO.FileInfo oInfo = new System.IO.FileInfo(sPath);
            string sRet = oInfo.Name;
            Response.Write(sPath.Replace(sRet, ""));

它在新 System.IO.FileInfo(sPath) 上显示异常,因为 sPath 包含“localhost/red/green/default.aspx”,表示“不支持给定路径的格式。”

4

5 回答 5

93

主要网址:http://localhost:8080/mysite/page.aspx?p1=1&p2=2

在 C# 中获取 URL 的不同部分。

Value of HttpContext.Current.Request.Url.Host
localhost

Value of HttpContext.Current.Request.Url.Authority
localhost:8080

Value of HttpContext.Current.Request.Url.AbsolutePath
/mysite/page.aspx

Value of HttpContext.Current.Request.ApplicationPath
/mysite

Value of HttpContext.Current.Request.Url.AbsoluteUri
http://localhost:8080/mysite/page.aspx?p1=1&p2=2

Value of HttpContext.Current.Request.RawUrl
/mysite/page.aspx?p1=1&p2=2

Value of HttpContext.Current.Request.Url.PathAndQuery
/mysite/page.aspx?p1=1&p2=2
于 2016-02-04T06:38:31.137 回答
12

不要将其视为 URI 问题,将其视为字符串问题。然后它很好很容易。

String originalPath = new Uri(HttpContext.Current.Request.Url.AbsoluteUri).OriginalString;
String parentDirectory = originalPath.Substring(0, originalPath.LastIndexOf("/"));

真的是那么容易!

编辑添加缺少的括号。

于 2013-11-02T07:03:15.597 回答
3

替换这个:

            string sRet = oInfo.Name;
            Response.Write(sPath.Replace(sRet, ""));

有以下内容:

        string sRet = oInfo.Name;           
        int lastindex = sRet.LastIndexOf("/");
        sRet=sRet.Substring(0,lastindex)
        Response.Write(sPath.Replace(sRet, ""));
于 2013-11-02T07:05:29.540 回答
2

用这个

string sPath = (HttpContext.Current.Request.Url).ToString();
sPath = sPath.Replace("http://", "");
var oInfo = new  System.IO.FileInfo(HttpContext.Current.Request.RawUrl);
string sRet = oInfo.Name;
Response.Write(sPath.Replace(sRet, ""));
于 2013-11-02T07:09:10.303 回答
0

如果您只是想导航到站点上的另一个页面,这可能会满足您的需求,但如果您真的需要,它不会获得绝对路径。您可以在站点内导航而无需使用绝对路径。

string loc = "";
loc = HttpContext.Current.Request.ApplicationPath + "/NewDestinationPage.aspx";
Response.Redirect(loc, true);

如果您真的需要绝对路径,您可以选择部分并使用 Uri 类构建您需要的内容:

Uri myUri = new Uri(HttpContext.Current.Request.Url.AbsoluteUri)
myUri.Scheme
myUri.Host  // or DnsSafeHost
myUri.Port
myUri.GetLeftPart(UriPartial.Authority)  // etc.

关于 ASP.NET 路径主题的好文章

于 2014-08-27T13:02:01.467 回答