0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: asp.net, фильтры ресурсов</p>
1
<p>Теги: asp.net, фильтры ресурсов</p>
2
<p><strong>Фильтры ресурсов</strong>применяются в ASP.net в целях переопределения результата действия. Это бывает полезно, к примеру, при кэшировании: в фильтре ресурсов вы можете получить кэш и сразу установить результат без повторной генерации этого результата в методах контроллера.</p>
2
<p><strong>Фильтры ресурсов</strong>применяются в ASP.net в целях переопределения результата действия. Это бывает полезно, к примеру, при кэшировании: в фильтре ресурсов вы можете получить кэш и сразу установить результат без повторной генерации этого результата в методах контроллера.</p>
3
<p>Создать фильтр ресурсов можно одним из двух способов: - реализовать интерфейс<strong>IResourceFilter</strong>; - реализовать интерфейс<strong>IAsyncResourceFilter</strong>.</p>
3
<p>Создать фильтр ресурсов можно одним из двух способов: - реализовать интерфейс<strong>IResourceFilter</strong>; - реализовать интерфейс<strong>IAsyncResourceFilter</strong>.</p>
4
<p>Давайте представим, что нам необходимо ограничить доступ к веб-сайту для старых веб-браузеров типа того же IE. Для решения поставленной задачи мы можем разработать простейший фильтр ресурсов.</p>
4
<p>Давайте представим, что нам необходимо ограничить доступ к веб-сайту для старых веб-браузеров типа того же IE. Для решения поставленной задачи мы можем разработать простейший фильтр ресурсов.</p>
5
<p>Итак, добавим в наш проект следующий класс фильтра:</p>
5
<p>Итак, добавим в наш проект следующий класс фильтра:</p>
6
<p>Интерфейс<strong>IResourceFilter</strong>предоставляет нам 2 метода:</p>
6
<p>Интерфейс<strong>IResourceFilter</strong>предоставляет нам 2 метода:</p>
7
<ol><li>OnResourceExecuting(): срабатывает непосредственно ПОСЛЕ фильтров авторизации, однако ДО выполнения метода и ДО работы фильтров действий, фильтров исключений и фильтров результатов.</li>
7
<ol><li>OnResourceExecuting(): срабатывает непосредственно ПОСЛЕ фильтров авторизации, однако ДО выполнения метода и ДО работы фильтров действий, фильтров исключений и фильтров результатов.</li>
8
<li>OnResourceExecuted(): срабатывает непосредственно ПОСЛЕ выполнения метода и фильтров действий, фильтров исключений и фильтров результатов.</li>
8
<li>OnResourceExecuted(): срабатывает непосредственно ПОСЛЕ выполнения метода и фильтров действий, фильтров исключений и фильтров результатов.</li>
9
</ol><p>В качестве параметра в эти два метода передается параметр типа<strong>ResourceExecutedContext</strong>-- он позволяет получать данные запроса, управляя ответом.</p>
9
</ol><p>В качестве параметра в эти два метода передается параметр типа<strong>ResourceExecutedContext</strong>-- он позволяет получать данные запроса, управляя ответом.</p>
10
<p>В нашем случае мы проверяем заголовок "<strong>User-Agent</strong>". Если этот заголовок содержит соответствующие веб-браузеру Internet Explorer подстроки, тогда посредством свойства<strong>Result</strong>мы переустанавливаем ответ -- на этом обработка запроса заканчивается, а метод и последующие фильтры уже не выполняются.</p>
10
<p>В нашем случае мы проверяем заголовок "<strong>User-Agent</strong>". Если этот заголовок содержит соответствующие веб-браузеру Internet Explorer подстроки, тогда посредством свойства<strong>Result</strong>мы переустанавливаем ответ -- на этом обработка запроса заканчивается, а метод и последующие фильтры уже не выполняются.</p>
11
<h2>Асинхронная версия реализации</h2>
11
<h2>Асинхронная версия реализации</h2>
12
<p>Теперь давайте посмотрим на реализацию такой же задачи, но уже посредством асинхронной версии:</p>
12
<p>Теперь давайте посмотрим на реализацию такой же задачи, но уже посредством асинхронной версии:</p>
13
<p><em>По материалам https://metanit.com/sharp/aspnet5/.</em></p>
13
<p><em>По материалам https://metanit.com/sharp/aspnet5/.</em></p>
14
14