ASP .NET自定义RoleProvider不尊重cacheRolesInCookie ="true"

Bra*_*ery 6 asp.net cookies forms-authentication roleprovider

我已经实现了一个自定义角色提供程序,并在我的web.config文件中配置它,如下所示:

<roleManager enabled="true" defaultProvider="TDRoleProvider" cacheRolesInCookie="true">
  <providers>
    <clear/>
    <add name="TDRoleProvider" type="TDRoleProvider"/>
  </providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)

我已经覆盖了我的自定义角色提供程序中的GetRolesForUser函数,我已经介入它,它运行得很好 - 为我正在测试的用户加载了60个角色.但是,我注意到每次调用User.IsInRole的请求都会调用GetRolesForUser.在我编写的其他应用程序中,它只调用一次,然后将结果缓存在cookie中.出于某种原因,缓存不适用于此应用程序.任何想法为什么?

Gre*_*reg 3

https://web.archive.org/web/20101123220352/http://connect.microsoft.com/VisualStudio/feedback/details/104688/rolemanager-cacherolesincookie-option-does-not-work

“RolePrincipal 中何时缓存(或不缓存)的问题经历了多次设计迭代,我们最终决定只缓存 IPrincipal 接口公开的方法(即 IsInRole)。”