ПО промежуточного слоя в минимальных приложениях API
Примечание.
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
Внимание
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 9 этой статьи.
WebApplication
автоматически добавляет следующее ПО промежуточного слоя в Minimal API applications
зависимости от определенных условий:
UseDeveloperExceptionPage
сначала добавляется при выполненииHostingEnvironment
"Development"
действия .UseRouting
добавляется второй, если пользовательский код еще не вызвалUseRouting
и если настроены конечные точки, напримерapp.MapGet
.UseEndpoints
добавляется в конце конвейера ПО промежуточного слоя, если настроены какие-либо конечные точки.UseAuthentication
добавляется сразу после того,UseRouting
как пользовательский код еще не звонилUseAuthentication
и можетIAuthenticationSchemeProvider
быть обнаружен в поставщике услуг.IAuthenticationSchemeProvider
добавляется по умолчанию при использованииAddAuthentication
, а службы обнаруживаются с помощьюIServiceProviderIsService
.UseAuthorization
добавляется далее, если пользовательский код еще не вызвалUseAuthorization
и можетIAuthorizationHandlerProvider
быть обнаружен в поставщике услуг.IAuthorizationHandlerProvider
добавляется по умолчанию при использованииAddAuthorization
, а службы обнаруживаются с помощьюIServiceProviderIsService
.- Пользовательские ПО промежуточного слоя и конечные точки добавляются между
UseRouting
иUseEndpoints
.
Следующий код фактически представляет собой то, что добавляется в приложение автоматический по промежуточному слоям:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
В некоторых случаях конфигурация ПО промежуточного слоя по умолчанию не является правильной для приложения и требует изменения. Например, UseCors следует вызывать до UseAuthentication и UseAuthorization. Приложение должно вызываться UseAuthentication
и UseAuthorization
при UseCors
вызове:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Если по промежуточному слоям следует запустить перед сопоставлением маршрутов, следует вызвать и UseRouting по промежуточному слоям следует поместить перед вызовом UseRouting
. UseEndpoints Не требуется в этом случае, так как он автоматически добавляется, как описано ранее:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
При добавлении по промежуточного слоя терминала:
- По промежуточному слоям необходимо добавить после
UseEndpoints
. - Приложение должно вызываться
UseRouting
иUseEndpoints
таким образом, чтобы по промежуточному слоя терминала можно было разместить в правильном расположении.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
ПО промежуточного слоя терминала — это ПО промежуточного слоя, которое выполняется, если конечная точка не обрабатывает запрос.
WebApplication
автоматически добавляет следующее ПО промежуточного слоя в Minimal API applications
зависимости от определенных условий:
UseDeveloperExceptionPage
сначала добавляется при выполненииHostingEnvironment
"Development"
действия .UseRouting
добавляется второй, если пользовательский код еще не вызвалUseRouting
и если настроены конечные точки, напримерapp.MapGet
.UseEndpoints
добавляется в конце конвейера ПО промежуточного слоя, если настроены какие-либо конечные точки.UseAuthentication
добавляется сразу после того,UseRouting
как пользовательский код еще не звонилUseAuthentication
и можетIAuthenticationSchemeProvider
быть обнаружен в поставщике услуг.IAuthenticationSchemeProvider
добавляется по умолчанию при использованииAddAuthentication
, а службы обнаруживаются с помощьюIServiceProviderIsService
.UseAuthorization
добавляется далее, если пользовательский код еще не вызвалUseAuthorization
и можетIAuthorizationHandlerProvider
быть обнаружен в поставщике услуг.IAuthorizationHandlerProvider
добавляется по умолчанию при использованииAddAuthorization
, а службы обнаруживаются с помощьюIServiceProviderIsService
.- Пользовательские ПО промежуточного слоя и конечные точки добавляются между
UseRouting
иUseEndpoints
.
Следующий код фактически представляет собой то, что добавляется в приложение автоматический по промежуточному слоям:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
В некоторых случаях конфигурация ПО промежуточного слоя по умолчанию не является правильной для приложения и требует изменения. Например, UseCors следует вызывать до UseAuthentication и UseAuthorization. Приложение должно вызываться UseAuthentication
и UseAuthorization
при UseCors
вызове:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Если по промежуточному слоям следует запустить перед сопоставлением маршрутов, следует вызвать и UseRouting по промежуточному слоям следует поместить перед вызовом UseRouting
. UseEndpoints Не требуется в этом случае, так как он автоматически добавляется, как описано ранее:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
При добавлении по промежуточного слоя терминала:
- По промежуточному слоям необходимо добавить после
UseEndpoints
. - Приложение должно вызываться
UseRouting
иUseEndpoints
таким образом, чтобы по промежуточному слоя терминала можно было разместить в правильном расположении.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
ПО промежуточного слоя терминала — это ПО промежуточного слоя, которое выполняется, если конечная точка не обрабатывает запрос.
Сведения о вредоносных по промежуточном слоях в минимальных API см. в статье "Предотвращение атак межсайтовых запросов forgery (XSRF/CSRF) в ASP.NET Core
Дополнительные сведения о по промежуточном слоях см. в разделе ASP.NET По промежуточного слоя Core и список встроенных по промежуточного слоя, которые можно добавить в приложения.
Дополнительные сведения о минимальных API см. в статье Minimal APIs overview
.
ASP.NET Core