我遇到了導致異常的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'執行時那樣工作。