解析的 Uri 有错误的端口号

Parsed Uri has wrong port number

考虑代码,假设 baseUri 来自方法参数

    Uri baseUri = new Uri("www.contoso.com:8080/", UriKind.RelativeOrAbsolute);

    baseUri = baseUri.IsAbsoluteUri
            ? baseUri
            : new Uri("http://" + baseUri.OriginalString);//make URI http by default
    Uri myUri = new Uri(baseUri, "catalog/shownew.htm?date=today");

对于给定的字符串 IsAbsoluteUri returns 为真。但是尽管在 URI 中指定了端口 myUri.Port 是 -1 并且 myUri.Host 是空的。

我应该如何解析这个字符串以获得正确的端口号?

您需要将 http:// 添加到基本 uri 字符串的开头,使其成为有效的 URI,例如:

Uri baseUri = new Uri("http://www.contoso.com:8080/", UriKind.RelativeOrAbsolute);

DotNetFiddle