如何在ASP.Net中解析和重建URL?

时间:2010-09-21 16:44:24

标签: c# url parameters

我正在开发一个C#/ ASP.Net应用程序,我正在尝试找到一种方法,将URL分解为其组成部分,然后交换,删除这些部分并创建新的URL。

例如,如果我有以下网址:

我想将网址拆分为:

  • 协议(http,https,ftp等)
  • 域名(www.site.com)
  • Page(page.aspx)
  • 网址参数(parm1 = value1,parm2 = value2)

一旦URL被拆分,我想操纵每个部分,例如:

  • 添加或删除参数
  • 更改参数值
  • 将页面从page.aspx更改为page2.aspx

然后,一旦我完成,请创建一个准备好与上述更改一起使用的新URL。

我已经查看了MSDN文档等,但在.Net中找不到实用程序类来处理这个问题。有什么想法吗?

干杯, 史蒂夫

2 个答案:

答案 0 :(得分:4)

为此目的,框架附带UriBuilder class

它已获取/设置所需内容的属性:

  • 协议:Scheme属性
  • 域名:Host属性
  • 页面:Path属性(将为您提供完整路径,您可能需要在此处进行一些处理)。
  • 参数:Query属性(作为字符串公开,您可能需要对自己的字符串进行一些处理)。

当您完成对UriBuilder的操作时,使用Uri属性将结果作为Uri对象获取,或者如果您只需要将URL作为字符串,则使用ToString()。

答案 1 :(得分:0)

首先使用UriBuilder(参见driis的回答)。

要解析Query属性,请使用:

NameValueCollection q=HttpUtility.ParseQueryString(uri.Query);

你实际上得到了一个HttpValueCollection(内部) - 所以当你以后调用q.ToString()时,你会得到一个url编码的查询字符串。

由于课程是内部课程,您需要致电

NameValueCollection q=HttpUtility.ParseQueryString("");

如果您想从头开始构建查询字符串。