我正在开发一个具有自定义成员资格和角色提供程序的ASP.NET MVC应用程序。
我的自定义角色提供程序使用LinqToEntities查询用户/角色映射表,并检索用户是否在角色中。
在调试、本地机器上运行时,一切正常。然而,在IIS7上部署时,我有一种奇怪的行为:
当我将角色更改为用户,然后使用该用户登录时,它将保留旧角色,而不是新角色。好像它们被缓存在某个地方,但我已经设置了 cacheRolesInCookie="false" web.config中的选项
cacheRolesInCookie="false"
在网上阅读时,我发现我提到的选项只是一个提供者的指令,这意味着如果我不实现它的用法,它将被忽略,对吗?
这让我困惑。每次调用方法时,我的提供程序都应该执行一个新的查询。它在本地工作,但不在带有iis7的部署机器上工作。
有人知道IIS7中是否有任何隐藏的设置使事情正常运行?
谢谢。
很长一段时间后,我找到了解决办法。
问题出现在我用来读取用户/角色的EF上下文中。
我修复了它在每次检查角色时恢复上下文,而不是在应用程序重新启动之前保持相同的上下文。