System.Security.SecurityException - Получить имя роли - PullRequest
0 голосов
/ 30 октября 2009

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

0 голосов
/ 23 мая 2014

Роль находится в свойстве 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);     
}   
0 голосов
/ 30 октября 2009

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

т.е.,

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

...