Я использую 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) Выполнение обнаружения на фильтре, созданном пользователем, не обрабатывалось.
Я использую настройки конфигурации по умолчанию.Я предполагаю, что смогу обойти ошибку тайм-аута, увеличив значение тайм-аута, однако я не уверен, что делать с ошибкой разрешения имени.