System.UriFormatException: недопустимый URI: не удалось проанализировать имя хоста

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

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

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

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

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

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

System.UriFormatException: недопустимый URI: не удалось проанализировать имя хоста.

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

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

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

[UriFormatException: недопустимый URI: не удалось проанализировать имя хоста.]
System.Uri.CreateThis (String uri, Boolean dontEscape, UriKind uriKind) +5367536 System.Uri.CreateUri (Uri baseUri, String relativeUri, Boolean dontEscape) + 31 System.Uri..ctor (Uri baseUri, String relativeUri) +34 System.Net.HttpWebRequest.CheckResubmit (Exception & e) +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, строковая роль, типObjectToReturn) +54
System.Xml.XmlTextReaderImpl.OpenUrl > System.Threading.CompressedStack.runTryCode (объект userData) +70
System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (код TryCode, код возврата кода очистки, пользовательские данные объекта) +0
System.Threading.CompressedStack.Stack. compressedStack, обратный вызов ContextCallback, состояние объекта) +108
System.Xml.XmlTextReaderImpl.OpenUrl () +186
System.Xml.XmlTextReaderImpl.Read () +208
System.Xml.XmlLoader.Load (XmlDocument doc, XmlReader re ader, Boolean preserveWhitespace) +112 System.Xml.XmlDocument.Load (средство чтения XmlReader) +108
System.Web.UI.WebControls.XmlDataSource.PopulateXmlDocument (документ преобразования XmlDocument, CacheDependency и dataCacheDependency3, CacheDependency, CacheDependency, CacheDependency
+30Dependency .Web.UI.WebControls.XmlDataSource.GetXmlDocument () +153
System.Web.UI.WebControls.XmlDataSourceView.ExecuteSelect (аргументы DataSourceSelectArguments) +29 System.Web.UI.WebControls.BaseDataList (+Get39) .Web.UI.WebControls.DataList.CreateControlHierarchy (Boolean useDataSource) +264
System.Web.UI.WebControls.BaseDataList.OnDataBinding (EventArgs e) +55 System.Web.UI.WebControls.BaseDataList () +.DataBinding 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.U I.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 (логическое includeStagesBeforeAsyncPoint, логическое includeStagesAfterAsyncPoint) +4588


person Shane    schedule 11.05.2010    source источник
comment
Покажите нам свой XmlDataSource.   -  person SLaks    schedule 12.05.2010
comment
хм .. единственный xml на сайте находится в xml файле, используемом для RadRotator (telerik). Но это не изменилось с течением времени. Остается только файл web.config.   -  person Shane    schedule 12.05.2010
comment
Эта трассировка стека берется из DataList, привязанного к XmlDataSource.   -  person SLaks    schedule 12.05.2010
comment
Поцарапайте ошибку радротатора, так как ошибка обнаруживалась на страницах, на которых ее также не было.   -  person Shane    schedule 12.05.2010
comment
ах, ты прав. это то, что он говорит. Проблема в том, что нет списков данных, если они не являются частью управления телериком. Я не вижу ничего, чтобы сузить круг вопросов, где именно возникла ошибка. ты можешь?   -  person Shane    schedule 12.05.2010
comment
Сотрите это. есть список данных, который я использую для отображения RSS-канала. Он не изменился за эоны. Я раскопаю этот путь.   -  person Shane    schedule 12.05.2010
comment
‹Asp: DataList ID = RssOutput runat = server DataSourceID = RssData OnItemDataBound = RssOutput_ItemDataBound CellPadding = 0› ‹ItemTemplate› ‹asp: HyperLink ID = lnkTitle runat = server NavigateUrl = '‹% # ›XPath (ссылка)‹% % # XPath (title)% ›'› ‹/ asp: HyperLink› ‹asp: Label ID = lblPubDate runat = server› (PubDate) ‹/ asp: Label› ‹br /› ‹asp: Label ID = lblDescription runat = server Text = '‹% # XPath (description)%›' ›‹ / asp: Label ›‹br /› ‹/ItemTemplate›‹ / asp: DataList ›   -  person Shane    schedule 12.05.2010
comment
Я буду окружать его попыткой / уловом и следить за ошибками. очевидно, что здесь уже должна была быть некоторая обработка ошибок. Большое спасибо за то, что указали мне правильное направление !!!   -  person Shane    schedule 12.05.2010
comment
Пожалуйста, покажите нам RssData источник.   -  person SLaks    schedule 12.05.2010


Ответы (1)


В 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-адреса, вызывающие это исключение, я бы обязательно их увидел.

person Jim Mischel    schedule 11.05.2010
comment
Попробуйте эту строку: mailto: foo [at] bar.com - person huseyint; 24.04.2014
comment
@huseyint: строки "[email protected]" работают должным образом. Строка "foo[at]bar.com" снова вызывает исключение в конструкторе, как и ожидалось. Ошибка, с которой я столкнулся, связана со строками, для которых конструктор Uri работает успешно, но последующий доступ к свойству Host вызывает исключение. - person Jim Mischel; 24.04.2014