Чтение онлайн

на главную - закладки

Жанры

Шрифт:

HandleErrorAttibute

Атрибут HandleErrorAttribute предназначен для того, чтобы однообразно сформировать механизм обработки необработанных в контроллерах исключений. Атрибут HandleErrorAttribute применим как к классу контроллера, так и к любому действию. Кроме того, допустимо указывать атрибут несколько раз. По умолчанию, без параметров, механизм MVC с помощью атрибута HandleErrorAttribute при возникновении исключения произведет переадресацию на представление Error,

которое должно находиться в папке -/Views/Shared. Однако это действие можно изменить под свои потребности. Для манипулирования порядком действия атрибута HandleErrorAttribute у него есть ряд параметров:

? ExceptionType — указывает тип исключения, на возникновение которого должен реагировать данный атрибут;

? View — указывает представление, которое нужно показать пользователю при срабатывании атрибута;

? Master — указывает наименование Master View, которое будет использоваться при демонстрации пользователю представления;

? Order — указывает на последовательный номер, в порядке которого атрибут будет исполняться.

Для демонстрации работы атрибута HandleErrorAttribute создадим представление AdminError, которое будет использоваться только тогда, когда произойдет ошибка при работе с контроллером AdminController. В листинге 4.3 представлен код представления.

<%@ Page Title="" Language="C#"

MasterPageFile="~/Views/Shared/Site.Master"

Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent"

runat="server">

Ошибка! Произошло необработанное исключение.

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent"

runat="server">

<% var model = (HandleErrorlnfo)ViewData.Model; %>

<h2>Внимание</h2>

<р>При работе сайта произошла исключительная

ситуация в действии <%= model.ActionName %>

контроллера <%= model.ControllerName %>.

Ниже представлена дополнительная информация об исключении:

<%= model.Exception.Message %>

<%= model.Exception.StackTrace %>

</asp:Content>

Обратите внимание, для получения доступа к расширенной информации об исключении мы используем свойство Model объекта ViewData, предварительно приведя его к типу HandleErrorInfo. Механизм атрибута HandleErrorAttribute создает для представления элемент типа HandleErrorInfo, объект которого содержит следующие данные:

? ActionName — имя действия, в котором произошло исключение;

? ControllerName — имя контроллера, в котором произошло исключение;

? Exception - объект типа Exception, в котором содержится вся информация об исключении, в том числе строка сообщения и трассировка стека.

Для того чтобы проверить наше представление, создадим для тестирования новое действие TestException в контроллере AdminController:

public ActionResult TestException

{

throw new Exception("Проверка исключения");

}

Пометим наш контроллер AdminController

атрибутом HandleErrorAttribute в следующем виде, как это показано во фрагменте:

[HandleError(View = "AdminError")]

public class AdminController : Controller

Теперь, чтобы механизм атрибута HandleErrorAttribute заработал, необходимо включить механизм Custom Errors в файле web.config так, как показано во фрагменте:

<customErrors mode="On" />

После запуска приложения и попытки доступа к действию TestException мы получим сообщение об ошибке (рис. 4.8).

Кроме перечисленного, атрибут HandleErrorAttribute имеет ряд важных особенностей:

? если механизм Custom Errors запрещен, или исключение уже было обработано другим атрибутом, то исполнение атрибута прекращается;

? если исключение является HTTP-исключением с кодом, отличным от 500, исполнение атрибута прекращается. Другими словами, этот атрибут не обрабатывает HTTP-исключения с любыми кодами ошибок, кроме 500;

? атрибут устанавливает Response.TrySkipIisCustomErrors = true для того, чтобы попытаться переопределить страницы веб-сервера, настроенные для отображения ошибок;

? атрибут устанавливает код HTTP-ответа в значение 500, которое сообщает клиенту о возникшей при запросе ошибке.

Использование атрибута HandleErrorAttribte позволяет гибко настраивать реакцию вашего приложения на возникновение исключительных ситуаций.

Вы можете определять для каждого контроллера, действия или типа исключения свои представления вывода информации об ошибке.

ValidateAntiForgeryTokenAttribute

Проблема безопасности в современном Интернете не заканчивается вместе с проверкой права доступа на базе неких правил, ролей или пользователей.

Вместе с возможностями защиты от несанкционированного доступа изменяются и способы проникновения и взлома защиты. Одним из таких способов проникнуть через защиту сайта является атака под названием Cross-site Request Forgery Attack (CSRF). Суть этой атаки заключается в следующем:

? сайт должен иметь авторизацию по cookies, а пользователь, через которого планируется атака, должен иметь возможность автоматической авторизации;

? на некой специальной странице в Интернете создается элемент формы со скрытыми параметрами и автоматическим отправлением этих данных по адресу сайта, на котором зарегистрирован пользователь;

? при посещении страницы, подготовленной злоумышленником, пользователь, сам того не предполагая, авторизуется на своем сайте и выполняет некий запрос, который может делать все, что угодно, от простого принудительного "выхода" пользователя из системы до отправки неких данных на сервер в контексте авторизованного пользователя.

Поделиться:
Популярные книги

Неучтенный элемент. Том 11

NikL
11. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 11

Владимир Высоцкий. По-над пропастью

Сушко Юрий Михайлович
Документальная литература:
биографии и мемуары
6.25
рейтинг книги
Владимир Высоцкий. По-над пропастью

Хроники Амбера. Книги Корвина (авторский сборник)

Желязны Роджер Джозеф
Хроники Амбера
Фантастика:
фэнтези
9.04
рейтинг книги
Хроники Амбера. Книги Корвина (авторский сборник)

Паладин из прошлого тысячелетия

Еслер Андрей
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.67
рейтинг книги
Паладин из прошлого тысячелетия

Сочинения в 2 т. Том 1

Северов Петр Федорович
Проза:
советская классическая проза
5.00
рейтинг книги
Сочинения в 2 т. Том 1

Polo или зеленые оковы

Зайцев Алексей
Фантастика:
юмористическая фантастика
космическая фантастика
6.25
рейтинг книги
Polo или зеленые оковы

Криптономикон

Стивенсон Нил Таун
Проза:
историческая проза
8.10
рейтинг книги
Криптономикон

"Фантастика 2025-4". Компиляция. Книги 1-26

Бриз Илья
Фантастика 2025. Компиляция
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2025-4. Компиляция. Книги 1-26

Антарктида: Четвертый рейх

Сушинский Богдан Иванович
Секретный фарватер
Фантастика:
альтернативная история
5.33
рейтинг книги
Антарктида: Четвертый рейх

Егерь. Прилив. Книга 10

Скиба Николай
10. Зверолов
Фантастика:
рпг
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Егерь. Прилив. Книга 10

Фрегат Звенящий (сборник)

Крапивин Владислав Петрович
24. Владислав Крапивин собрание сочинений
Детские:
детская фантастика
5.00
рейтинг книги
Фрегат Звенящий (сборник)

Зарубежье

Чупринин Сергей
Русская литература сегодня
Справочная литература:
справочники
7.00
рейтинг книги
Зарубежье

Белая гвардия. История России

Булгаков Михаил Афанасьевич
Белая гвардия
Проза:
современная проза
советская классическая проза
5.00
рейтинг книги
Белая гвардия. История России

Основные произведения иностранной художественной литературы. Азия. Африка

Коллектив авторов
Научно-образовательная:
языкознание
литературоведение
5.00
рейтинг книги
Основные произведения иностранной художественной литературы. Азия. Африка