Недопустимый URI: имя хоста не может быть проанализировано

Я пытаюсь Construct Uri. Но я не могу обработать плохой uri

Есть ли способ, которым мы можем справиться с плохой uri's

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 part получает ошибку для плохой 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

Я получил аналогичную ошибку с nginx fastcgi-mono-server4. Оказывается, webсервер предоставил значение regex для SERVER_NAME. Поэтому я должен исправить его на сервере, заменив fastcgi_param SERVER_NAME $server_name; на fastcgi_param SERVER_NAME $host;

Ответ 3

У меня было место после "http://", например http://exampleServer/exampleservice.svc, которое вызвало эту ошибку.