我们在ASP.NET Web表单Intranet站点中有一个自定义角色提供程序。我们确保此类继承自RoleProvider并实现适当的方法。但是,很明显它的方法没有被调用,包括Initialize。我们在web.config中有以下内容:
<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 :(得分:2)
我觉得傻瓜不得不提供这个答案,但希望它可以帮助那些遇到类似麻烦的人。虽然似乎所有证据都指出自定义角色提供程序没有被调用,但它实际上是。由于我们的角色被缓存,它似乎没有被调用。正如您在上面的代码段中所看到的,我们有以下内容:
cacheRolesInCookie="true">
这导致角色管理器拉出我们没想到的角色,因为我们在测试期间操纵它们。当我们将属性更改为“false”时,一切都按预期开始工作。