0

我有一个正在使用的自定义 RoleProvider,但我发现 cacheRolesInCookie 不起作用。阅读后,这是预期的行为。但是,我想覆盖它并自己处理缓存。我的问题是我无法弄清楚如何从配置文件中读取值以确定是否应该进行缓存。这是我的配置设置...

<roleManager defaultProvider="MyRoleProvider" cacheRolesInCookie="true" enabled="true">
  <providers>
    <clear/>
    <add name="MyRoleProvider" 
         type="MyCompany.WebSecurity.MyRoleProvider" 
         connectionStringName="Security" 
         applicationName="TestSite" />
  </providers>
</roleManager>

我使用以下代码阅读了提供程序设置:

var membershipSection = (MembershipSection)WebConfigurationManager.GetSection("system.web/membership");
var defaultProvider = membershipSection.DefaultProvider;
var providerSettings = membershipSection.Providers[defaultProvider];

var connStringName = providerSettings.Parameters["connectionStringName"];

如何获取属性 cacheRolesInCookie 的值?

谢谢,

4

1 回答 1

1

我发现了我的问题。我将我的配置部分转换为错误的类型。这是我现在所做的。

var roleManagerSection = (RoleManagerSection)WebConfigurationManager.GetSection("system.web/roleManager");

var cacheRolesInCookie = roleManagerSection.CacheRolesInCookie;
于 2012-05-25T19:59:18.677 回答