Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Примечание.
Это не последняя версия этой статьи. В текущей версии см. версию .NET 10 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
WebApplication автоматически добавляет следующее ПО промежуточного слоя в минимальные приложения API в зависимости от определенных условий:
-
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 автоматически добавляет следующее ПО промежуточного слоя в минимальные приложения API в зависимости от определенных условий:
-
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 см. в обзоре API.