如何在C#中获取URL路径

时间:2013-11-02 06:58:10

标签: c# asp.net .net 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”,说“不支持给定路径的格式。”

5 个答案:

答案 0 :(得分:68)

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

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

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

答案 1 :(得分:11)

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

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

真的很容易!

编辑添加缺失的括号。

答案 2 :(得分: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, ""));

答案 3 :(得分: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, ""));

答案 4 :(得分: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.

Good article关于ASP.NET路径的主题。