9

通常使用 Google OpenId 可以正常工作,每天数千次,然后它会开始间歇性出错并超时一个小时左右(一些请求会验证但不是全部)。重复验证最终会起作用。

错误消息是:

Event code: 200000 
Event message: No OpenID endpoint found. : https://www.google.com/accounts/o8/id 

Sequence contains no elements

添加 log4net 产生:

DotNetOpenAuth.Yadis:
Error while performing discovery on: "https://www.google.com/accounts/o8/id": 
DotNetOpenAuth.Messaging.ProtocolException:
 Error occurred while sending a direct message or getting the response. 
 ---> System.Net.WebException: The operation has timed out     
  at System.Net.HttpWebRequest.GetResponse()    
  at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse
     (HttpWebRequest request, DirectWebRequestOptions options) 
     in  c:\...\Dot...Core\Messaging\StandardWebRequestHandler.cs:line 127    
 --- End of inner exception stack trace ---     
  at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse
     (HttpWebRequest request, DirectWebRequestOptions options) 
     in c:\...\Dot...Core\Messaging\StandardWebRequestHandler.cs:line 175
  at DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse
     (HttpWebRequest request, DirectWebRequestOptions options)
     in c:\...\Dot...Core\Messaging\UntrustedWebRequestHandler.cs:line 250
  at DotNetOpenAuth.Yadis.Yadis.Request
     (IDirectWebRequestHandler requestHandler,
       Uri uri, Boolean requireSsl, String[] acceptTypes) 
     in c:\...\Dot...OpenId\Yadis\Yadis.cs:line 172
  at DotNetOpenAuth.Yadis.Yadis.Discover
     (IDirectWebRequestHandler requestHandler, UriIdentifier uri, Boolean requireSsl)
     in c:\...\DotNetOpenAuth.OpenId\Yadis\Yadis.cs:line 63
  at DotNetOpenAuth.OpenId.UriDiscoveryService.Discover
     (Identifier identifier, IDirectWebRequestHandler requestHandler, 
           Boolean& abortDiscoveryChain) 
     in c:\...\DotNet...OpenId\OpenId\UriDiscoveryService.cs:line 51
  at DotNetOpenAuth.OpenId.IdentifierDiscoveryServices.Discover
     (Identifier identifier) 
     in c:\...\Dot...OpenId\OpenId\IdentifierDiscoveryServices.cs:line 58
  at DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.Create
     (Identifier userSuppliedIdentifier, OpenIdRelyingParty relyingParty,
       Realm realm, Uri returnToUrl, Boolean createNewAssociationsAsNeeded) 
     in ...OpenId.RelyingParty\OpenId\RelyingParty\AuthenticationRequest.cs:line 364

DotNetOpenAuth.Http WebException: 
 Timeout from https://www.google.com/accounts/o8/id, no response available.

有任何想法吗?

4

2 回答 2

2

听起来您需要修复网络延迟。谷歌似乎不太可能成为这里的瓶颈。

您可能还希望增加 HTTP 超时以降低失败率。完整的选项集可在此处获得。具体来说,您可能正在寻找:

<untrustedWebRequest
            timeout="00:00:10"
            readWriteTimeout="00:00:01.500" />

查看配置链接以查看其所在的上下文。

于 2012-06-09T19:26:12.420 回答
2

我们最近遇到了同样的问题。在阅读了几个不同的场景并完成了跟踪步骤后,我终于得出结论,正如我在其他地方看到的那样,这个问题可能是由 DNS 服务器问题引起的。在我们的案例中,我们有一台已使用超过 18 个月的生产服务器,最近才开始遇到与上述相同的问题,但在这台服务器上非常一致。另一个网络上的另一台服务器和我们的开发计算机没有任何问题。

长话短说,我将生产服务器的主 DNS 更改为 Google 的公共 DNS 8.8.8.8,它立即开始工作。在此之前,我已经手动刷新了生产服务器上的 DNS 缓存(没有正面结果),因此我相信 DNS 服务器(由我们的托管中心提供)有一个错误的缓存条目,最终导致了问题。

希望这可以帮助遇到这种情况的其他人。

于 2014-03-17T18:39:26.610 回答