2009-12-16 17 views
0

Je développe une application ASP.NET MVC avec des fournisseurs de rôles et d'appartenances personnalisés.ASP.NET MVC et la mise en cache des rôles?

Mon fournisseur de rôles personnalisé utilise LinqToEntities pour interroger la table de mappage utilisateur/rôle et extraire si un utilisateur est dans un rôle ou non.

Lors de l'exécution sur le débogage, machine locale, tout va bien. Lors du déploiement sur IIS7 cependant, j'ai ce comportement étrange:

Lorsque je change de rôle pour un utilisateur, puis de me connecter avec cet utilisateur, il conserve les anciens rôles, au lieu des nouveaux. C'est comme si elles étaient cachées quelque part, mais j'ai déjà défini l'option cacheRolesInCookie="false" dans le fichier Web.config

En lisant sur le web, j'ai vu que l'option que j'ai mentionnée n'est qu'une directive pour le fournisseur, c'est-à-dire si je ne l'implémente pas son usage, il sera ignoré, n'est-ce pas?

Cela me laisse perplexe. Mon fournisseur doit effectuer une nouvelle requête chaque fois qu'une méthode est appelée. Il fonctionne localement, mais pas sur la machine de déploiement avec IIS7.

Tout le monde sait s'il existe des paramètres masqués dans IIS7 pour que les choses fonctionnent correctement?

Merci.

Répondre

2

Après une longue période, j'ai trouvé la solution.

Le problème résidait dans le contexte EF que j'utilisais pour lire les utilisateurs/rôles. J'ai corrigé le problème en réintégrant le contexte à chaque fois qu'un rôle est vérifié, au lieu de conserver le même contexte jusqu'à ce que l'application soit redémarrée.