我遇到了PrinciplePermissionAttribute
导致异常的问题。我在方法上具有该属性的任何页面在Load
初始登录后立即引发异常。
<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
. 随后的请求显示正确的类型来代替泛型。我试图Global.asax
在事件中强制在文件中执行此操作,PostAuthenticate
但 asp.net 似乎在GenericPrincipal
发生这种情况后进行设置。
关于如何解决这种行为的任何想法,或者我是否坚持使用该Roles.IsUserInRole()
方法?
更新在这里
找到了对管道中发生的事情的一些解释后,我可以看到为什么在其中更改它没有帮助。我之前有一个原型项目,我用它进行了测试,但我无法在那里重现它。我确实想知道它是否与项目类型有关。原型是一个网站项目,而有问题的是一个 Web 应用程序项目。Global.asax
我确实认为将其GenericPrincipal
更改为RolePrincipal
但仅在初始请求已处理后才更改为奇怪。所以很难说它没有像它一样在我的“Page_Load”执行之前不会发生。