DotNetOpenAuth с Yahoo, AOL приводит к Timeout или NameResolutionFailure - PullRequest
1 голос
/ 29 июля 2011

Я использую DotNetOpenAuth 3.5.0.10357 и при попытке авторизации с использованием Yahoo в качестве поставщика (https://me.yahoo.com) часто в OpenIdRelyingParty.CreateRequest (Идентификатор) выдается ProtocolException. Если предпринята другая попытка сразу после первой попытки рабочий процесс ведет себя как ожидалось. Я добавил документ XRDS в соответствии с этим сообщением в блоге, и когда провайдер Yahoo отвечает, он обнаруживает файл, так как он больше не отображает это сообщение для проверки Все остальные провайдеры, за исключением AOL, у которого есть те же проблемы, всегда работают должным образом. Я включил ведение журнала, и, кажется, есть две разные причины: одна - время ожидания, другая - NameResolutionFailure, обе из WebException.

Вот журнал из экземпляра, результатом которого является NameResolutionFailure:

HTTP GET https://me.yahoo.com/ WebException NameResolutionFailure from https://me.yahoo.com/, ответ отсутствует. Ошибка при выполнении обнаружение на: "https://me.yahoo.com/": DotNetOpenAuth.Messaging.ProtocolException: ошибка произошла во время отправка прямого сообщения или получение ответа. ---> System.Net.WebException: удаленное имя не может быть разрешено: 'me.yahoo.com' в System.Net.HttpWebRequest.GetResponse () в DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse (HttpWebRequest запрос, параметры DirectWebRequestOptions) --- конец внутреннего трассировка стека исключений --- в DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse (HttpWebRequest запрос, параметры DirectWebRequestOptions) в DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse (HttpWebRequest запрос, параметры DirectWebRequestOptions) в DotNetOpenAuth.Yadis.Yadis.Request (IDirectWebRequestHandler requestHandler, Uri uri, Boolean requireSsl, String [] acceptTypes)
в DotNetOpenAuth.Yadis.Yadis.Discover (IDirectWebRequestHandler requestHandler, UriIdentifier uri, Boolean requireSsl) в DotNetOpenAuth.OpenId.UriDiscoveryService.Discover (идентификатор идентификатор, IDirectWebRequestHandler requestHandler, Boolean & abortDiscoveryChain) в DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.Discover (идентификатор идентификатор) в DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.Create (идентификатор userSuppliedIdentifier, OpenIdRelyingParty relyingParty, область царства, Uri returnToUrl, Boolean, createNewAssociationsAsNeeded) Выполнение обнаружение по предоставленному пользователем идентификатору: https://me.yahoo.com/ Фильтрация и сортировка конечных точек не повлияла на список.

Ниже приведен журнал из таймаута:

HTTP GET https://me.yahoo.com/ Тайм-аут WebException от https://me.yahoo.com/, ответ отсутствует. Ошибка при выполнении обнаружение на: "https://me.yahoo.com/": DotNetOpenAuth.Messaging.ProtocolException: ошибка произошла во время отправка прямого сообщения или получение ответа. ---> System.Net.WebException: истекло время ожидания операции System.Net.HttpWebRequest.GetResponse () в DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse (HttpWebRequest запрос, параметры DirectWebRequestOptions) --- конец внутреннего трассировка стека исключений --- в DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse (HttpWebRequest запрос, параметры DirectWebRequestOptions) в DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse (HttpWebRequest запрос, параметры DirectWebRequestOptions) в DotNetOpenAuth.Yadis.Yadis.Request (IDirectWebRequestHandler requestHandler, Uri uri, Boolean requireSsl, String [] acceptTypes)
в DotNetOpenAuth.Yadis.Yadis.Discover (IDirectWebRequestHandler requestHandler, UriIdentifier uri, Boolean requireSsl) в DotNetOpenAuth.OpenId.UriDiscoveryService.Discover (идентификатор идентификатор, IDirectWebRequestHandler requestHandler, Boolean & abortDiscoveryChain) в DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.Discover (идентификатор идентификатор) вDotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.Create (Идентификатор userSuppliedIdentifier, OpenIdRelyingParty relyingParty, область Realm, Uri returnToUrl, логическое значение createNewAssociationsAsNeeded) Выполнение обнаружения на фильтре, созданном пользователем, не обрабатывалось.

Я использую настройки конфигурации по умолчанию.Я предполагаю, что смогу обойти ошибку тайм-аута, увеличив значение тайм-аута, однако я не уверен, что делать с ошибкой разрешения имени.

1 Ответ

1 голос
/ 30 июля 2011

Для меня это не похоже на проблему, связанную с DotNetOpenAuth.Похоже, ваш DNS-сервер работает медленно или у вас плохое соединение с ним.Я бы посмотрел на эту проблему.И да, увеличение тайм-аута поможет вам в крайнем случае.

...