2015-01-14 69 views
0

我们在ASP.NET Web表单Intranet站点中具有自定义角色提供程序。我们确保这个类继承自RoleProvider并实现适当的方法。但是,很明显它的方法没有被调用,包括初始化。我们在web.config中的以下内容:使用Windows身份验证的自定义角色提供程序

<authentication mode="Windows" /> 

<authorization> 
    <allow roles="CRM"/> 
    <deny users="?"/> 
</authorization> 

<roleManager defaultProvider="MyRoleProvider" 
    enabled="true" 
    cacheRolesInCookie="true"> 
    <providers> 
     <clear /> 
     <add 
      name="MyRoleProvider" 
      applicationName="MyApp" 
      type="MyApp.MyRoleProvider" 
      writeExceptionsToEventLog="false" /> 
    </providers> 
</roleManager> 

应当指出的是,我们已经回顾this的问题,但它的答案并不适用于我们的情况。

+0

您是否尝试过向eventviewer写入错误并检查了写入的异常? –

回答

1

我觉得自己像一个傻子不得不提供这个答案,但希望它可以帮助那些有类似麻烦的人。虽然似乎所有的证据都指出了自定义角色提供者没有被调用,但实际上是这样。由于我们的角色被缓存,似乎没有被调用。正如你可以在上面的代码片段看,我们有以下几点:

cacheRolesInCookie="true"> 

这引起了角色管理器拉,我们没有想到的角色,因为我们是在测试过程中对它们进行处理。当我们将该属性更改为“false”时,所有事情都按预期开始工作。

+1

你不是个傻瓜先生。我花了数小时试图弄清楚为什么CustomRoleProvider代码没有被调用(断点没有命中)。谢谢。 – Jack

相关问题