9

通常、Google OpenIdの使用は、1日に数千回正常に機能します。その後、断続的に問題が発生し、1時間ほどタイムアウトします(一部のリクエストは検証されますが、すべてではありません)。繰り返し検証を行うと、最終的には機能します。

エラーメッセージは次のとおりです。

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

ネットワーク遅延を修正する必要があるようです。ここで Google がボトルネックになる可能性は非常に低いようです。

失敗率を減らすために、エンドの HTTP タイムアウトを増やすこともできます。オプションの完全なセットは、こちらから入手できます。具体的には、おそらく次のものを探しています。

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

構成リンクをチェックして、これがどこに行くのかのコンテキストを確認してください。

于 2012-06-09T19:26:12.420 に答える
2

最近、この同じ問題に遭遇しました。いくつかの異なるシナリオを読み、トレース手順を実行した結果、この問題が DNS サーバーの問題によって引き起こされる可能性があることを他の場所で見たので、最終的に結論を下しました。私たちの場合、18 か月以上使用されている運用サーバーがあり、最近、上記と同じ問題が発生し始めましたが、この 1 つのサーバーでは非常に一貫していました。別のネットワーク上の別のサーバーと開発用コンピューターには問題はありませんでした。

簡単に言えば、運用サーバーのプライマリ DNS を Google のパブリック DNS である 8.8.8.8 に変更したところ、すぐに機能し始めました。これより前に、実稼働サーバーの DNS キャッシュを手動でフラッシュしていたので (肯定的な結果は得られませんでした)、DNS サーバー (ホスティング センターから提供されたもの) に不良なキャッシュ エントリがあり、それが最終的に問題を引き起こしていると思われます。

これが、このシナリオに出くわした他の誰かに役立つことを願っています.

于 2014-03-17T18:39:26.610 に答える