2009-10-30 98 views
0

我已經實現了一個抓在我的Global.asax所有類似的安全異常的方法...System.Security.SecurityException - 獲取角色名稱

protected void Application_Error(object sender, EventArgs e) 
    { 

     Exception err = Server.GetLastError(); 
     if (err is System.Security.SecurityException) 
      Response.Redirect("~/Error/Roles.aspx); 

    } 

有沒有我可以訪問屬性,顯示用戶權限中缺少的角色名稱? IE瀏覽器。 err.RoleThatFailed?

Manh thanks,

ETFairfax。

回答

0

您可以輸出整個堆棧跟蹤。

err.ToString()會告訴你更多的信息。

+0

感謝您的回覆。我希望在用戶看到的頁面上更具體。 I.E「您沒有XYZ權限」。 err.ToString()進入我的錯誤日誌,所以我可以看到發生了什麼,但用戶需要看到一些更友善! – ETFairfax 2009-10-30 12:41:12

0

該角色可以在PermissionState屬性中找到。該屬性包含需要解析的XML。角色的名稱可以在元素'Identity'中找到,該元素具有名爲'Role'的屬性。

Exception err = Server.GetLastError(); 
if (err is System.Security.SecurityException) 
{ 
    var xmlDocument = new XmlDocument(); 
    xmlDocument.LoadXml(err.PermissionState); 
    string roleName = xmlDocument.GetElementsByTagName("Identity")[0].Attributes["Role"].Value; 

    ... 

    Response.Redirect("~/Error/Roles.aspx);  
}