System.Security.SecurityException - Получить имя роли

Я реализовал метод перехвата всех исключений безопасности в моем 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);

    }

Есть ли свойство, к которому я могу получить доступ, показывающее имя роли, которое отсутствовало в разрешениях пользователей? То есть. err.RoleThatFailed?

Мэн спасибо,

ETFairfax.

2 ответа

Вы можете просто вывести всю трассировку стека.

т.е.

err.ToString() расскажет вам больше информации.

Роль может быть найдена в свойстве PermissionState. Это свойство содержит XML, который необходимо проанализировать. Название роли можно найти в элементе "Идентичность", который имеет атрибут "Роль".

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);     
}   
Другие вопросы по тегам