获取url,而不querystring

我有这样的url:

http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye

我想从中获取http://www.example.com/mypage.aspx

你能告诉我怎样才能得到它?

你可以使用System.Uri

 Uri url = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye"); string path = String.Format("{0}{1}{2}{3}", url.Scheme, Uri.SchemeDelimiter, url.Authority, url.AbsolutePath); 

或者你可以使用substring

 string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye"; string path = url.Substring(0, url.IndexOf("?")); 

编辑:修改第一个解决scheme,以反映brillyfresh在评论中的build议。

这是一个更简单的解决scheme:

 var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye"); string path = uri.GetLeftPart(UriPartial.Path); 

从这里借用: 截断查询string和返回干净的URL C#ASP.net

这是我的解决scheme:

 Request.Url.AbsoluteUri.Replace(Request.Url.Query, String.Empty); 
 Request.RawUrl.Split(new[] {'?'})[0]; 

在这里也find了很好的答案来源

 Request.Url.GetLeftPart(UriPartial.Path) 

我的方式:

 new UriBuilder(url) { Query = string.Empty }.ToString() 

要么

 new UriBuilder(url) { Query = string.Empty }.Uri 

您可以使用Request.Url.AbsolutePath获取页面名称,并使用Request.Url.Authority作为主机名和端口。 我不相信有一个内置的财产给你你想要的东西,但你可以把它们自己结合起来。

这是一个使用@ Kolman的答案的扩展方法。 记住使用Path()比GetLeftPart稍微容易一些。 您可能希望将path重命名为GetPath,至less在将扩展属性添加到C#之前。

用法:

 Uri uri = new Uri("http://www.somewhere.com?param1=foo&param2=bar"); string path = uri.Path(); 

class上:

 using System; namespace YourProject.Extensions { public static class UriExtensions { public static string Path(this Uri uri) { if (uri == null) { throw new ArgumentNullException("uri"); } return uri.GetLeftPart(UriPartial.Path); } } } 

Request.RawUrl.Split( '?')[0]

只为url名称!

Silverlight解决scheme:

 string path = HtmlPage.Document.DocumentUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped); 

尝试这个:

 urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?")) 

从这个: http ://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye你会得到这个:mypage.aspx

this.Request.RawUrl.Substring(0,this.Request.RawUrl.IndexOf('?'))