2012-04-08 5 views
8

Di solito l'utilizzo di Google OpenId funziona bene, migliaia di volte al giorno, quindi inizierà a intermittenza andando storto e scadente per un paio di ore (alcune richieste verranno convalidate ma non tutte). La convalida ripetuta funzionerà alla fine.Google OpenId: nessun endpoint OpenID trovato (intermittente)

I messaggi di errore sono:

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

Sequence contains no elements 

Aggiunta rendimenti 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 

E

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

Tutte le idee?

+0

Le richieste HTTP in uscita verso altri server riescono in modo affidabile durante questi tempi difficili? –

+0

Sì come tutte le richieste in entrata. –

+0

DotNetOpenAuth.Http \t Timeout WebException da https://www.google.com/accounts/o8/id, nessuna risposta disponibile. DotNetOpenAuth.Yadis \t Errore durante l'esecuzione del rilevamento: "https://www.google.com/accounts/o8/id": DotNetOpenAuth.Messaging.ProtocolException: si è verificato un errore durante l'invio di un messaggio diretto o la risposta. ---> System.Net.WebException: L'operazione è scaduta a System.Net.HttpWebRequest.GetResponse() ... –

risposta

2

Sembra che sia necessario correggere la latenza della rete. Sembra altamente improbabile che Google sarebbe il collo di bottiglia qui.

Si potrebbe anche voler aumentare i timeout HTTP sulla propria estremità per ridurre il tasso di errore. Il set completo di opzioni è disponibile here. Specificamente probabilmente stai cercando:

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

Controlla il collegamento delle configurazioni per vedere il contesto di dove questo va.

+0

Sembra essere correlato alle interruzioni del server DNS –

2

Recentemente abbiamo avuto questo stesso problema. Dopo aver letto diversi scenari e aver seguito i passaggi della traccia, alla fine ho concluso, come ho visto altrove che questo problema può essere causato da un problema del server DNS. Nel nostro caso disponevamo di un server di produzione in uso da oltre 18 mesi e di recente ha iniziato ad avere lo stesso problema sopra menzionato, ma era molto coerente su questo server. Un altro server su un'altra rete e i nostri computer di sviluppo non hanno avuto problemi.

Per farla breve, ho modificato il DNS primario del server di produzione sul DNS pubblico di Google, 8.8.8.8 e ha iniziato a funzionare immediatamente. Avevo svuotato manualmente la cache DNS sul server di produzione prima di questo (senza esito positivo), quindi mi induce a credere che il server DNS (fornito dal nostro centro di hosting) avesse una voce di cache errata che alla fine causava il problema.

Spero che questo aiuti qualcun altro che attraversa questo scenario.