Oauth DotNetOpenAuth与Yahoo、AOL一起导致超时或名称解析失败

Oauth DotNetOpenAuth与Yahoo、AOL一起导致超时或名称解析失败,oauth,openid,dotnetopenauth,Oauth,Openid,Dotnetopenauth,我正在使用DotNetOpenAuth 3.5.0.10357,并且在尝试授权使用Yahoo作为提供商时(https://me.yahoo.com)经常在OpenIdRelyingParty.CreateRequest(标识符)上抛出ProtocolException。如果在第一次尝试之后立即进行另一次尝试,则工作流将按预期运行。我已经根据博客帖子添加了一个XRDS文档,当Yahoo提供商响应时,它似乎检测到该文件,因为它不再显示验证消息。除AOL有相同问题外,所有其他提供商都能始终正常工作。我

我正在使用DotNetOpenAuth 3.5.0.10357,并且在尝试授权使用Yahoo作为提供商时(https://me.yahoo.com)经常在OpenIdRelyingParty.CreateRequest(标识符)上抛出ProtocolException。如果在第一次尝试之后立即进行另一次尝试,则工作流将按预期运行。我已经根据博客帖子添加了一个XRDS文档,当Yahoo提供商响应时,它似乎检测到该文件,因为它不再显示验证消息。除AOL有相同问题外,所有其他提供商都能始终正常工作。我启用了日志记录,似乎有两个不同的原因,一个是超时,另一个是NameResolutionFailure,都来自WebException

以下是导致NameResolutionFailure的实例日志:

HTTP获取WebException名称解析失败 ,没有回应。执行时出错 发现于:“https://me.yahoo.com/": DotNetOpenAuth.Messaging.ProtocolException:执行以下操作时出错: 发送直接消息或获得响应。--> System.Net.WebException:无法解析远程名称: 位于System.Net.HttpWebRequest.GetResponse()的“me.yahoo.com” 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、布尔requireSsl、字符串[]接受类型)
位于DotNetOpenAuth.Yadis.Yadis.Discover(IDirectWebRequestHandler requestHandler、uri标识符uri、布尔requireSsl)位于 DotNetOpenAuth.OpenId.UriDiscoveryService.Discover(标识符 标识符,IDirectWebRequestHandler,请求处理程序,布尔值& abortDiscoveryChain)位于 DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.Discover(标识符 标识符)在 DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.Create(标识符 userSuppliedIdentifier、OpenIdRelyingParty、relyingParty、Realm领域、, Uri returnToUrl,布尔CreateNewAssociations(根据需要)正在执行 发现用户提供的标识符:筛选 端点的排序不会影响列表

以下是超时的日志:

HTTP从中获取WebException超时 ,没有回应。执行时出错 发现于:“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、布尔requireSsl、字符串[]接受类型)
位于DotNetOpenAuth.Yadis.Yadis.Discover(IDirectWebRequestHandler requestHandler、uri标识符uri、布尔requireSsl)位于 DotNetOpenAuth.OpenId.UriDiscoveryService.Discover(标识符 标识符,IDirectWebRequestHandler,请求处理程序,布尔值& abortDiscoveryChain)位于 DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.Discover(标识符 标识符)在 DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.Create(标识符 userSuppliedIdentifier、OpenIdRelyingParty、relyingParty、Realm领域、, Uri returnToUrl,布尔CreateNewAssociations(根据需要)正在执行 发现用户提供的标识符:筛选 端点的排序不会影响列表


我正在使用默认的配置设置。我猜我可以通过增加超时设置来绕过超时错误,但是我不确定如何处理名称解析错误。

从异常情况来看,这对我来说不像是DotNetOpenAuth特定的问题。看起来您的DNS服务器运行缓慢,或者您与它的连接不好。我会调查那个问题。是的,增加超时时间将在紧要关头帮助您。

从异常情况来看,我认为这不是DotNetOpenAuth特有的问题。看起来您的DNS服务器运行缓慢,或者您与它的连接不好。我会调查那个问题。是的,增加超时时间将在紧要关头帮助您。

有没有办法缓存发现的结果?有没有办法缓存发现的结果?