我遇到了导致异常的PrinciplePermissionAttribute
问题。初次登录后,我在Load
方法中拥有该属性的任何页面都会立即引发异常。ASP.Net会员委托人允许问题
<PrincipalePermission(SecurityAction.Demand, role:="Level1")> _
Protected Sub Page_Load(ByVal sender As Object, ByVal e as System.EventArgs) Handles Me.Load
End Sub
这会抛出异常Request for principal permission failed
。
如果我删除这个页面加载正常,我可以导航到另一个页面,确实有这个相同的属性,它的工作完美无瑕。此外,如果我使用会员制系统Roles.IsUserInRole()
函数我没有问题。
我注意到,在初始登录后,我的Thread.CurrentPrincipal
的类型为GenericPrincipal
,而不是RolePrincipal
。随后的请求会显示正确的类型来代替通用。我试图在PostAuthenticate
事件中的Global.asax
文件中强制执行此操作,但是在发生这种情况后,asp.net似乎正在设置GenericPrincipal
。
有关如何解决此问题的任何想法,还是我坚持使用Roles.IsUserInRole()
方法?
UPDATE
找到一些解释成什么在管道here发生的事情,我可以看到为什么在Global.asax
改变它并没有帮助后。我有一个早期的原型项目,我测试了这一点,但我不能在那里重现它。我想知道它是否与项目类型有关。原型是一个Web站点项目,问题是一个Web应用程序项目。
我认为奇怪的是,GenericPrincipal
被更改为RolePrincipal
,但只有在初始请求处理完毕后。所以很难说它不像我们的'Page_Load'执行时那样工作。