Uri.TryCreate的输入参数,有什么问题?

时间:2012-04-16 15:48:33

标签: c# .net url uri relative-url

我们下载的HTML页面很少,链接断开(相对路径),我们有每个页面下载的原始网址。

我们正在使用 -

将所有相对链接转换为绝对链接
Foreach (anchorElement in page) -
    Uri.TryCreate( originalPageURI, hrefRelativeURI, hrefAbsoluteURI )

这适用于大多数情况,但以下情况除外 -

originalPageURI = http://somewebsite.com/post.jsp?item=22

hrefRelativeURI = ?item=97

对于Uri.TryCreate()失败的上述情况,TryCreate()的输入参数是什么?

1 个答案:

答案 0 :(得分:2)

您无法使用Uri解决问题,因为?item=97不是相对路径,而是查询字符串。

因此,您需要做的是构建手动连接部件的新URL。

您应该使用:

  • originalFolderPath,作为原始网址直到最后'/'的部分。你可以加入这个“真正的”相对路径来获得绝对的uri。 (即那些不以?开头的

  • originalFilePath,作为原始网址中'?'的部分。您可以加入此部分的“错误”相对路径。 false表示查询字符串参数(即以?开头的那些参数)。