System.UriFormatException: неверный URI: не удалось проанализировать имя хоста - PullRequest
8 голосов
/ 12 мая 2010

Внезапно на моем веб-сайте появляется следующая ошибка. Это не доступ к базе данных. Это простой сайт, использующий .NET 2.0.

Я недавно применил доступные пакеты обновления для Windows Server 2003. Могло ли это что-то изменить?

Я должен добавить, что ошибка случайно приходит и уходит и делает это на сегодня и вчера. Я оставляю это на 5 минут, и ошибка исчезла.

Ошибка сервера в «/» приложении.

Неверный URI: не удалось проанализировать имя хоста. Описание: Ан необработанное исключение произошло во время выполнения текущей сети запрос. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации о ошибка и где она возникла в коде.

Сведения об исключении:

System.UriFormatException: неверный URI: имя хоста не может быть разобранный.

Ошибка источника:

Неожиданное исключение было сгенерировано во время выполнения текущий веб-запрос. Информация о происхождении и местонахождении исключение можно определить с помощью трассировки стека исключений, приведенной ниже.

Трассировка стека:

[UriFormatException: неверный URI: не удалось проанализировать имя хоста.]
System.Uri.CreateThis (строка URI, логическое значение DontEscape, UriKind uriKind) +5367536 System.Uri.CreateUri (URI baseUri, относительная строка, URI, логический dontEscape) +31 System.Uri..ctor (Uri baseUri, строка lativeUri) +34 System.Net.HttpWebRequest.CheckResubmit (Исключение & д) + 5300867

[WebException: не удается обработать перенаправление с протоколов HTTP / HTTPS на другие непохожие.] System.Net.HttpWebRequest.GetResponse () +5314029 System.Xml.XmlDownloadManager.GetNonFileStream (Uri uri, учетные данные ICredentials) + 69
System.Xml.XmlDownloadManager.GetStream (Uri uri, ICredentials учетные данные) +3929371 System.Xml.XmlUrlResolver.GetEntity (Uri absoluteUri, строковая роль, тип объекта ObjectRoTurn) + 54
System.Xml.XmlTextReaderImpl.OpenUrlDelegate (Object xmlResolver) + 74
System.Threading.CompressedStack.runTryCode (Объект userData) + 70
System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (TryCode код, CleanoutCode backoutCode, объект userData) + 0
System.Threading.CompressedStack.Run (CompressedStackressedStack, Обратный вызов ContextCallback, состояние объекта) + 108
System.Xml.XmlTextReaderImpl.OpenUrl () + 186
System.Xml.XmlTextReaderImpl.Read () + 208
System.Xml.XmlLoader.Load (документ XmlDocument, читатель XmlReader, логическое значение preserveWhitespace) +112 System.Xml.XmlDocument.Load (XmlReader читатель) + 108
System.Web.UI.WebControls.XmlDataSource.PopulateXmlDocument (XmlDocument документ, CacheDependency & dataCacheDependency, CacheDependency & transformCacheDependency) + 303
System.Web.UI.WebControls.XmlDataSource.GetXmlDocument () + 153
System.Web.UI.WebControls.XmlDataSourceView.ExecuteSelect (DataSourceSelectArguments аргументы) +29 System.Web.UI.WebControls.BaseDataList.GetData () +39 System.Web.UI.WebControls.DataList.CreateControlHierarchy (Boolean useDataSource) + 264
System.Web.UI.WebControls.BaseDataList.OnDataBinding (EventArgs e) +55 System.Web.UI.WebControls.BaseDataList.DataBind () + 75
System.Web.UI.WebControls.BaseDataList.EnsureDataBound () + 55
System.Web.UI.WebControls.BaseDataList.CreateChildControls () + 65
System.Web.UI.Control.EnsureChildControls () + 97
System.Web.UI.Control.PreRenderRecursiveInternal () + 53
System.Web.UI.Control.PreRenderRecursiveInternal () + 202
System.Web.UI.Control.PreRenderRecursiveInternal () + 202
System.Web.UI.Control.PreRenderRecursiveInternal () + 202
System.Web.UI.Control.PreRenderRecursiveInternal () + 202
System.Web.UI.Page.ProcessRequestMain (BooleanincludeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 4588

1 Ответ

5 голосов
/ 12 мая 2010

В Uri.Create и Uri.TryCreate есть некоторые ошибки, которые позволяют им создавать недопустимые URI, которые впоследствии не могут быть проанализированы. Я сталкивался с этим время от времени, но не смог отследить строки URL, которые его вызывают. Я написал немного об этом здесь .

Если у вас есть список URL-адресов и вы знаете, что один из них вызывает проблему (у меня не было такой роскоши, поскольку я столкнулся с этим при веб-сканировании, где не сохранял текст страницы), вы можете найти ошибка с чем-то вроде этого псевдокода:

while not end of file
{
    string url = read from file
    Uri uri = new Uri(url);
    try
    {
        string host = uri.Host;
    }
    catch (UriFormatException)
    {
        Console.WriteLine("Bad url: {0}", url);
    }
}

Если вы сможете определить некоторые URL-адреса, которые вызывают это исключение, я бы обязательно их увидел.

...