ASP.NET MVC 和角色缓存?
我正在开发一个带有自定义成员资格和角色提供程序的 ASP.NET MVC 应用程序。
我的自定义角色提供程序使用 LinqToEntities 查询用户/角色映射表并检索用户是否处于角色中。
在调试本地计算机上运行时,一切正常。然而,在 IIS7 上部署时,我遇到了这种奇怪的行为:
当我将角色更改为用户,然后使用该用户登录时,它保留旧角色,而不是新角色。就像它们被缓存在某个地方,但我已经在 Web.config 中设置了 cacheRolesInCookie="false"
选项在
网上阅读,我看到我提到的选项只是提供程序的指令,这意味着如果我不实现它的用法,它将被忽略,对吗?
这让我很困惑。我的提供者应该在每次调用方法时执行新的查询。它可以在本地运行,但不能在带有 IIS7 的部署计算机上运行。
有人知道 IIS7 中是否有任何隐藏设置可以使事情正常工作吗?
谢谢。
I am developing an ASP.NET MVC app with custom membership and role providers.
My custom role provider uses LinqToEntities to query the user/role mapping table and retrieve if a user is in a role or not.
When running on debug, local machine, everything is fine. When deploying on IIS7 however, I have this strange behavior:
When I change roles to a user, and then login with that user, it retains the old roles, instead of the new ones. It's like they are cached somewhere, but I already set the cacheRolesInCookie="false"
option in the Web.config
Reading on the web, I saw that the option I mentioned is just a directive for the provider, meaning if I don't implement its usage, it will be ignored, is that right?
This leaves me puzzled. My provider should perform a fresh query every time a method is called. It works locally, but not on the deploy machine with IIS7.
Anyone knows if there's any hidden setting in IIS7 to make things work right?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
经过很长时间我找到了解决方案。
问题出在我用来读取用户/角色的 EF 上下文上。
我修复了它,每次检查角色时都会重新实例化上下文,而不是在应用程序重新启动之前保留相同的上下文。
After a long time I found the solution.
The problem was residing on the EF context I was using to read the users/roles.
I fixed it resintantiating the context every time a role is checked, instead of keeping the same context until application restarted.