2012-04-08 63 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服務器(由我們的託管中心提供)具有最終導致問題的錯誤緩存條目。

希望這有助於其他人在此場景中運行。