Asp.net
Google OpenId:未找到 OpenID 端點(間歇性)
通常使用 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.有任何想法嗎?
聽起來您需要修復網路延遲。Google似乎不太可能成為這裡的瓶頸。
您可能還希望增加 HTTP 超時以降低失敗率。完整的選項集可在此處獲得。具體來說,您可能正在尋找:
<untrustedWebRequest timeout="00:00:10" readWriteTimeout="00:00:01.500" />查看配置連結以查看其所在的上下文。
我們最近遇到了同樣的問題。在閱讀了幾個不同的場景並完成了跟踪步驟後,我終於得出結論,正如我在其他地方看到的那樣,這個問題可能是由 DNS 伺服器問題引起的。在我們的案例中,我們有一台已使用超過 18 個月的生產伺服器,最近才開始遇到與上述相同的問題,但在這台伺服器上非常一致。另一個網路上的另一台伺服器和我們的開發電腦沒有任何問題。
長話短說,我將生產伺服器的主 DNS 更改為 Google 的公共 DNS 8.8.8.8,它立即開始工作。在此之前,我已經手動刷新了生產伺服器上的 DNS 記憶體(沒有正面結果),因此我相信 DNS 伺服器(由我們的託管中心提供)有一個錯誤的記憶體條目,最終導致了問題。
希望這可以幫助遇到這種情況的其他人。