2016-08-21 2 views
0

Ich habe ein sehr schwer zu debuggendes Problem, das damit zu tun hat, dass ADAL Zugriffstoken in verschiedenen Threads erneuert. Meine Situation ist, dass ich versuche, die ADAL-Bibliothek zu verwenden, um ein Zugriffstoken für eine AD-Anwendung zu erhalten, um eine Verbindung mit einer SQL Azure-Datenbank herzustellen. Ich bin im Innern einer Autofac Registrierung die Token zu erwerben, so dass jedes Mal, wenn jemand danach fragt, es erneut aus (authContext ist eine statische Eigenschaft AuthenticationContext)HTTP-Timeout-Ausnahme beim Versuch, ADAL-Zugriffstoken in einem anderen Thread zu erneuern

authContext.AcquireTokenAsync("https://database.windows.net/", certCred).Result; 

Ich glaube, diese Probleme verursacht, weil die folgenden Schritte führen in der Zugriffs-Token-Anforderung Zeitüberschreitung -

1). Starten Sie die Anwendung, fordern Sie ein Zugriffstoken in Thread # 1 an. Erfolg

2). Erhöhen Sie die Zeit meines Computers um einen Tag, fordern Sie erneut ein Zugriffs-Token in Thread 1 an. Das alte Token wird gelöscht und die Bibliothek versucht, ein weiteres Token zu erhalten. Erfolg

3). Erhöhen Sie die Zeit meines Computers um einen Tag, fordern Sie erneut ein Zugriffs-Token in Thread 2 an. Dieses Mal wird das Token gelöscht und versucht, ein weiteres Token durch Senden einer Anfrage zu erhalten. Leider endet die Anfrage nach 30 Sekunden.

Interessanterweise, wenn ich die Anfragen in Charles oder Fiddler inspizieren, die Anfrage in # 2 sieht gut aus - es ist ein POST an den richtigen Endpunkt. # 3 führt zu einer CONNECT-Anfrage an "https://login.microsoftonline.com/" ohne relevante Header oder Body-Inhalt. Ich habe die Anfragen im Debugger angeschaut und # 3 scheint genau wie die Anfrage in # 2 erstellt zu werden.

Ich konnte es in einem kleineren Projekt leider nicht reproduzieren. Vielen Dank für Ihre Zeit.

+0

Welche Version von ADAL? –

+0

Version 3.13.2 - https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/releases/tag/v3.13.2 – Nick

+0

Können Sie die ausgelöste Ausnahme teilen? –

Antwort

0

Es stellt sich heraus, dass dies ein Problem mit der Art ist, wie ich async/await verwende, kein Problem mit der ADAL-Bibliothek. Ich schließe und erstelle eine neue Frage.

Verwandte Themen