0

我已经在我的 global.asax 中实现了一个捕获所有安全异常的方法,就像这样......

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?

谢谢,

ETF 费尔法克斯。

4

2 回答 2

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);     
}   
于 2014-05-23T16:27:42.863 回答
0

您可以只输出整个堆栈跟踪。

IE,

err.ToString()会告诉你更多信息。

于 2009-10-30T11:39:15.347 回答