我正在使用自定义角色提供程序,它过度简化使用 .net 4 MVC 项目上的 EF 从数据库中获取人员对象,并根据一些规则(和其他查询)分配用户角色。
数据会定期更改,尽管更改是通过系统中其他地方的代码而不是角色提供者进行的模式更改。角色提供者是一种方式,它只是获取用户所在的角色。
当我更改数据库值时,角色管理器不会接受角色的更改,直到我重新编译(例如通过在 web 配置中添加空格),或者应用程序重新启动。
我通过设置确保角色不会缓存在 cookie 中cacheRolesInCookie=false
,这似乎是大多数帮助所指向的,并且假设角色管理器中内置了会话缓存。
我已经修改了返回 person 对象的 EF 查询,将时间戳作为查询的一部分。我可以通过探查器看到实际上正在调用查询,并且时间戳每次都会更改,但是我的调试会话显示“人员”项的先前状态的陈旧数据。站点的其他部分显示来自 Person 表的数据,这些数据显示最新状态。
我真的不明白调试器应该如何处理缓存的数据。如果是缓存问题,我不明白为什么 EF 查询会触发,但人员数据肯定会显示第一次运行的状态,而不是表行的当前状态。
我觉得我错过了一些明显的东西。角色管理器是否缓存会话中的数据?