Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Совет
Это фрагмент из электронной книги для разработчиков ASP NET веб-формы для Azure, Blazor доступных в документации .NET или в виде бесплатного скачиваемого PDF-файла, который можно читать в автономном режиме.
Приложение ASP.NET Core строится на основе ПО промежуточного слоя. ПО промежуточного слоя — это обработчики, добавленные в конвейер для обработки запросов и ответов. В приложении Web Forms аналогичные проблемы решают модули и обработчики HTTP-данных. В ASP.NET Core модули, обработчики, Global.asax.cs и жизненный цикл приложения заменяются ПО промежуточного слоя. В этой главе вы узнаете о ПО промежуточного слоя в контексте приложения Blazor.
Обзор
Конвейер запросов ASP.NET Core состоит из последовательности делегатов запроса, вызываемых один за другим. На следующей схеме демонстрируется этот принцип. Поток выполнения показан черными стрелками.
На предыдущей схеме отсутствует концепция событий жизненного цикла. Данная концепция лежит в основе обработки запросов ASP.NET Web Forms. Эта система упрощает понимание того, какой процесс происходит, и позволяет вставлять ПО промежуточного слоя в любой момент. ПО промежуточного слоя выполняется в том порядке, в котором оно добавляется в конвейер запросов. Оно также добавляется в код вместо файлов конфигурации, обычно в файле Startup.cs.
Katana
Читатели, знакомые с Katana, будут чувствовать себя комфортно в ASP.NET Core. Фактически Katana — это платформа, от которой ведет свое начало ASP.NET Core. В ней представлены аналогичные шаблоны ПО промежуточного слоя и конвейера для ASP.NET 4.x. ПО промежуточного слоя, разработанное для Katana, можно адаптировать для работы с конвейером ASP.NET Core.
Распространенное ПО промежуточного слоя
ASP.NET 4.x включает множество модулей. ASP.NET Core тоже имеет много доступных компонентов ПО промежуточного слоя. В некоторых случаях в ASP.NET Core могут использоваться модули IIS. В других случаях может быть доступно встроенное ПО промежуточного слоя ASP.NET Core.
В следующей таблице приведен список ПО промежуточного слоя и компонентов в ASP.NET Core.
Модуль | Модуль ASP.NET 4.x | Вариант в ASP.NET Core |
---|---|---|
Ошибки HTTP | CustomErrorModule |
ПО промежуточного слоя для страниц кода состояния |
Документ по умолчанию | DefaultDocumentModule |
ПО промежуточного слоя для файлов по умолчанию |
Просмотр каталогов | DirectoryListingModule |
ПО промежуточного слоя для просмотра каталогов |
Динамическое сжатие | DynamicCompressionModule |
ПО промежуточного слоя сжатия ответов |
Трассировка неудачно завершенных запросов | FailedRequestsTracingModule |
Ведение журналов ASP.NET Core |
Кэширование файлов | FileCacheModule |
ПО промежуточного слоя для кэширования ответов |
Кэширование HTTP | HttpCacheModule |
ПО промежуточного слоя для кэширования ответов |
Ведение журнала HTTP | HttpLoggingModule |
Ведение журналов ASP.NET Core |
Перенаправление HTTP | HttpRedirectionModule |
ПО промежуточного слоя для переопределения URL-адресов |
Фильтры ISAPI | IsapiFilterModule |
ПО промежуточного слоя |
ISAPI | IsapiModule |
ПО промежуточного слоя |
Фильтрация запросов | RequestFilteringModule |
Интерфейс IRule ПО промежуточного слоя для переопределения URL-адресов |
Перезапись URL-адресов† | RewriteModule |
ПО промежуточного слоя для переопределения URL-адресов |
Статическое сжатие | StaticCompressionModule |
ПО промежуточного слоя сжатия ответов |
Статическое содержимое | StaticFileModule |
ПО промежуточного слоя для статических файлов |
Авторизация URL-адреса | UrlAuthorizationModule |
Идентификация ASP.NET Core |
Этот список не является исчерпывающим, но может дать представление о соответствии, существующем между этими двумя платформами. Более подробный список см. в разделе Модули IIS с ASP.NET Core.
Пользовательское ПО промежуточного слоя
Встроенное ПО промежуточного слоя может не обрабатывать все сценарии, необходимые для приложения. В таких случаях имеет смысл создать собственное ПО промежуточного слоя. Существует много способов определения ПО промежуточного слоя, самым простым из которых является обычный делегат. Рассмотрим следующее ПО промежуточного слоя, которое принимает запрос языка и региональных параметров из строки запроса:
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
var cultureQuery = context.Request.Query["culture"];
if (!string.IsNullOrWhiteSpace(cultureQuery))
{
var culture = new CultureInfo(cultureQuery);
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
}
// Call the next delegate/middleware in the pipeline
await next();
});
app.Run(async (context) =>
await context.Response.WriteAsync(
$"Hello {CultureInfo.CurrentCulture.DisplayName}"));
}
}
ПО промежуточного слоя можно также определить как класс, либо путем реализации интерфейса IMiddleware
, либо с помощью следующего соглашения ПО промежуточного слоя. Дополнительные сведения см. в разделе Создание пользовательского ПО промежуточного слоя ASP.NET Core.