2012-04-08 66 views
8

通常使用Google OpenId可以正常工作,每天数千次,然后它会间歇性地出现错误,并且超时一个小时左右(有些请求会验证但不是全部)。重复验证最终将起作用。Google OpenId:找不到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. 

任何想法?

+0

在这些困难时期,对其他服务器的出站HTTP请求是否可靠地成功? – 2012-04-08 17:23:36

+0

正如所有入站请求一样。 – 2012-06-05 14:24:55

+0

DotNetOpenAuth.Http \t WebException从https://www.google.com/accounts/o8/id中超时,没有可用的响应。 DotNetOpenAuth.Yadis \t在“https://www.google.com/accounts/o8/id”上执行发现时发生错误:DotNetOpenAuth.Messaging.ProtocolException:发送直接消息或获取响应时发生错误。 ---> System.Net.WebException:该操作超时在System.Net.HttpWebRequest.GetResponse()... – 2012-06-05 14:26:01

回答

2

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

您可能还希望增加HTTP端的超时以减少故障率。全套选项可用here。具体而言,您可能正在寻找:

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

查看配置链接以查看这种情况。

+0

似乎与DNS服务器中断有关 – 2012-10-05 17:23:23

2

我们最近遇到了同样的问题。在阅读了几个不同的场景并完成了我最后总结的跟踪步骤之后,正如我在别处看到的那样,这个问题可能是由DNS服务器问题引起的。在我们的例子中,我们有一台生产服务器已经使用了超过18个月,最近才开始获得上面提到的同样的问题,但是在这台服务器上它是非常一致的。另一个网络上的另一台服务器和我们的开发计算机没有任何问题。

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

希望这有助于其他人在此场景中运行。