2017-10-20 43 views
0

L'application fonctionne bien depuis des mois, mais hier a eu un problème avec mon ordinateur de développement (mise à jour des créateurs d'automne) donc vérifié le code sur mon ordinateur portable et est allé travailler. Cependant, je suis confronté à un problème où l'application n'écrit pas le jeton dans la base de données de cache. Ajouter quelques points d'arrêt àASP.Net MVC ADAL TokenCache ignorant AfterAccess BeforeAccess

void BeforeAccessNotification(TokenCacheNotificationArgs args) 
void AfterAccessNotification(TokenCacheNotificationArgs args) 
void BeforeWriteNotification(TokenCacheNotificationArgs args) 

méthodes que je peux voir qu'ils ne sont jamais touchés. Mon code est identique à l'exemple de code ici (sauf la ligne 14, a un nom différent)

https://github.com/Azure-Samples/active-directory-dotnet-webapp-groupclaims/blob/master/WebApp-GroupClaims-DotNet/Utils/TokenDbCache.cs

Mon Startup.Auth.cs est le même que ci-dessous (je copié et collé à tester)

https://github.com/Azure-Samples/active-directory-dotnet-webapp-groupclaims/blob/master/WebApp-GroupClaims-DotNet/App_Start/Startup.Auth.cs

J'ai une autre application qui utilise l'authentification presque identique et il fonctionne très bien, je peux le regarder frapper cette ligne dans le Startup.Auth

AuthenticationResult result = await 
authContext.AcquireTokenByAuthorizationCodeAsync(
context.Code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, ConfigHelper.GraphResourceId); 

puis il exécute BeforeAccessNotification, BeforeWriteNotification, AfterAccessNotification et fonctionne très bien. Mais dans l'application qui ne fonctionne pas, aucune des méthodes ci-dessus n'est exécutée, même si tout semble comme il se doit.

enter image description here

Toutes les idées? Je suis à perte totale.

+0

Pouvez-vous comparer l'application de travail et celle qui ne fonctionne pas pour confirmer la différence? –

+0

@ c2h0 - pouvez-vous définir un point d'arrêt sur le constructeur de votre cache? D'après ce que vous avez décrit, il semble qu'il y ait quelque chose au niveau du cadre d'entité (c'est-à-dire ne pas contacter la base de données?), De sorte que les informations mises en cache n'ont pas pu être récupérées. –

Répondre

0

Merci pour les réponses, la question se sont révélées la clé = « ida: GraphUrl » dans mon web.config a été retiré (aucune idée) si « ConfigHelper.GraphResourceId » dans

AuthenticationResult result = await 
authContext.AcquireTokenByAuthorizationCodeAsync(
context.Code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, ConfigHelper.GraphResourceId); 

était nulle , négligé comme je l'ai supposé

catch (AdalException ex) 

aurait attrapé cela.