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);
}