Uri.TryCreate没有产生我期望的结果

本文关键字:期望 结果 TryCreate Uri | 更新日期: 2023-09-27 18:21:04

我正在抓取一个网站的URL,锚标记的href值都设置为查询字符串,例如.

<a href="?AppId=12345&CatId=13">Details</a>

当前页面的URL如下所示。。

http://www.theurl.com/ThePage.aspx?PageNo=2

因此,我要找的网址将是

http://www.theurl.com/ThePage.aspx?AppId=12345&CatId=13

为了得到这个,我使用了Uri.TryCreate方法,所以我传入了以下参数(前两个参数的类型是Uri,而不是字符串)。。

Uri.TryCreate("http://www.theurl.com/ThePage.aspx?PageNo=2", "?AppId=12345&CatId=13", out uri);

但是,out参数"uri"被设置为..

http://www.theurl.com/?AppId=12345&CatId=13

如您所见,它删除了.aspx路径。你能推荐一种更好的方法吗?或者解释为什么它不能像我认为的那样工作?

Uri.TryCreate没有产生我期望的结果

试试这个:

Uri.TryCreate("http://www.theurl.com/ThePage.aspx?PageNo=2", "ThePage.aspx?AppId=12345&CatId=13", out uri);

根据文档,第一个是基本URI,第二个是相对URI。

嗯。我不确定发生的行为是否正确。这很可能是个错误。

在任何情况下,你都可能会发现以下技巧:

UriBuilder uBuild = new UriBuilder("http://www.theurl.com/path/thePage.aspx?PageNo=2");
uBuild.Query = "AppId=12345&CatId=13";
Uri newUri = ub.Uri;//http://www.theurl.com/path/thePage.aspx?AppId=12345&CatId=13
//Note that we can reuse uBuild as we continue to parse the page, as long as we're only dealing with cases where only the query changes.
uBuild.Query = "AppId=678&CatId=2";
Uri anotherUri = ub.Uri;//http://www.theurl.com/path/thePage.aspx?AppId=678&CatId=2