【问题标题】:Invalid URI: The hostname could not be parsed无效的 URI:无法解析主机名
【发布时间】:2011-05-11 00:11:18
【问题描述】:

我正在尝试构造一个 URI。但我无法处理错误的 URI。

有什么方法可以处理错误的 URI?

我正在使用的代码:

if (reviews[e.Item.ItemIndex].URL.ToString().Contains("http:"))
{
      oURI = new Uri(reviews[e.Item.ItemIndex].URL.ToString());
}
else 
{
   oURI = new Uri("http://"+ reviews[e.Item.ItemIndex].URL.ToString());
}

else 部分因错误的 URI 而出错。

谢谢!

【问题讨论】:

  • 如果你使用代码示例标签,阅读起来会容易得多

标签: c# error-handling uri


【解决方案1】:

致电Uri.TryCreate:

string original = reviews[e.Item.ItemIndex].URL.ToString();
if (!original.StartsWith("http:"))
    original = "http://" + original;
Uri uri;
if (!Uri.TryCreate(original, UriKind.Absolute, out uri)) {
    //Bad bad bad!
}

【讨论】:

  • 酷,我不知道它存在。我删除了我的帖子,因为您的帖子似乎是最好的答案。
【解决方案2】:

我在“http://”之后有一个空格,例如 http://exampleServer/exampleservice.svc,它导致了这个错误。

【讨论】:

    【解决方案3】:

    对于任何人来说,这都可能是问题所在, 在一些网址上有 Invalid URI: The hostname could not be parsed 给我,而在一些网址上却没有出现。

    我查看了网址制作问题,they had '\' instead of '/' in urls

    所以在 URI 解析中会抛出错误。

    【讨论】:

      【解决方案4】:

      我在使用 nginx fastcgi-mono-server4 时遇到了类似的错误。事实证明,网络服务器为 SERVER_NAME 提供了正则表达式值。所以我必须通过用fastcgi_param SERVER_NAME $host;替换fastcgi_param SERVER_NAME $server_name;在服务器上修复它

      【讨论】:

        【解决方案5】:

        尝试在 C# 中构造 URI 对象时,我遇到了类似的错误。 对我来说,问题在于长度。

        【讨论】:

          【解决方案6】:

          也许这会在未来帮助一些可怜的灵魂。我只是花了 5 个小时把头撞在墙上,试图弄清楚为什么 SpecFlow 会因这个确切的错误而窒息。我找不到确凿的证据,但我相当确定路径名称太长,或者路径中可能有一些不好的东西。当我将解决方案移至较小的路径名时,它起作用了。这是SO question/answer 我发布的关于我遇到的错误的详细信息。

          【讨论】:

            猜你喜欢
            • 2011-02-18
            • 2016-01-28
            • 2023-03-09
            • 1970-01-01
            • 2017-08-04
            • 2015-06-03
            • 2023-03-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多