Aracılığıyla paylaş


Minimal API uygulamalarında ara yazılım

WebApplication aşağıdaki ara yazılımı Minimal API applications belirli koşullara bağlı olarak otomatik olarak ekler:

  • UseDeveloperExceptionPage , olduğunda HostingEnvironment"Development"ilk olarak eklenir.
  • UseRouting , kullanıcı kodu henüz çağrılmazsa UseRouting ve örneğin app.MapGetyapılandırılmış uç noktalar varsa eklenir.
  • UseEndpoints , herhangi bir uç nokta yapılandırılırsa ara yazılım işlem hattının sonuna eklenir.
  • UseAuthenticationkullanıcı kodu henüz çağrılmazsa UseAuthentication ve hizmet sağlayıcısında algılanabilirse IAuthenticationSchemeProvider hemen sonra UseRouting eklenir. IAuthenticationSchemeProvider kullanılırken AddAuthenticationvarsayılan olarak eklenir ve kullanılarak hizmetler algılanır IServiceProviderIsService.
  • UseAuthorization , kullanıcı kodu henüz çağrılmazsa UseAuthorization ve hizmet sağlayıcısında algılanabilirse IAuthorizationHandlerProvider eklenir. IAuthorizationHandlerProvider kullanılırken AddAuthorizationvarsayılan olarak eklenir ve kullanılarak hizmetler algılanır IServiceProviderIsService.
  • Kullanıcı tarafından yapılandırılmış ara yazılım ve uç noktalar ile UseEndpointsarasına UseRouting eklenir.

Aşağıdaki kod, uygulamaya eklenen otomatik ara yazılımların etkili bir şekilde ürettiği koddur:

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 => {});

Bazı durumlarda, varsayılan ara yazılım yapılandırması uygulama için doğru değildir ve değişiklik gerektirir. Örneğin, UseCors ve UseAuthorizationöncesinde UseAuthentication çağrılmalıdır. Uygulamanın çağrısı UseAuthenticationUseAuthorization ve çağrılıp çağrılmaması UseCors gerekir:

app.UseCors();
app.UseAuthentication();
app.UseAuthorization();

Yol eşleştirme gerçekleşmeden önce ara yazılım çalıştırılmalıdır, UseRouting çağrılmalı ve ara yazılım çağrısından UseRoutingönce yerleştirilmelidir. UseEndpoints daha önce açıklandığı gibi otomatik olarak eklendiğinden bu durumda gerekli değildir:

app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// other middleware and endpoints

Terminal ara yazılımı eklerken:

  • Ara yazılım, sonrasında UseEndpointseklenmelidir.
  • Terminal ara yazılımının doğru konuma yerleştirilebilmesi için uygulamanın araması UseRoutingUseEndpoints gerekir.
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

Terminal ara yazılımı, isteği hiçbir uç nokta işlemezse çalışan ara yazılımdır.

WebApplication aşağıdaki ara yazılımı Minimal API applications belirli koşullara bağlı olarak otomatik olarak ekler:

  • UseDeveloperExceptionPage , olduğunda HostingEnvironment"Development"ilk olarak eklenir.
  • UseRouting , kullanıcı kodu henüz çağrılmazsa UseRouting ve örneğin app.MapGetyapılandırılmış uç noktalar varsa eklenir.
  • UseEndpoints , herhangi bir uç nokta yapılandırılırsa ara yazılım işlem hattının sonuna eklenir.
  • UseAuthenticationkullanıcı kodu henüz çağrılmazsa UseAuthentication ve hizmet sağlayıcısında algılanabilirse IAuthenticationSchemeProvider hemen sonra UseRouting eklenir. IAuthenticationSchemeProvider kullanılırken AddAuthenticationvarsayılan olarak eklenir ve kullanılarak hizmetler algılanır IServiceProviderIsService.
  • UseAuthorization , kullanıcı kodu henüz çağrılmazsa UseAuthorization ve hizmet sağlayıcısında algılanabilirse IAuthorizationHandlerProvider eklenir. IAuthorizationHandlerProvider kullanılırken AddAuthorizationvarsayılan olarak eklenir ve kullanılarak hizmetler algılanır IServiceProviderIsService.
  • Kullanıcı tarafından yapılandırılmış ara yazılım ve uç noktalar ile UseEndpointsarasına UseRouting eklenir.

Aşağıdaki kod, uygulamaya eklenen otomatik ara yazılımların etkili bir şekilde ürettiği koddur:

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 => {});

Bazı durumlarda, varsayılan ara yazılım yapılandırması uygulama için doğru değildir ve değişiklik gerektirir. Örneğin, UseCors ve UseAuthorizationöncesinde UseAuthentication çağrılmalıdır. Uygulamanın çağrısı UseAuthenticationUseAuthorization ve çağrılıp çağrılmaması UseCors gerekir:

app.UseCors();
app.UseAuthentication();
app.UseAuthorization();

Yol eşleştirme gerçekleşmeden önce ara yazılım çalıştırılmalıdır, UseRouting çağrılmalı ve ara yazılım çağrısından UseRoutingönce yerleştirilmelidir. UseEndpoints daha önce açıklandığı gibi otomatik olarak eklendiğinden bu durumda gerekli değildir:

app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// other middleware and endpoints

Terminal ara yazılımı eklerken:

  • Ara yazılım, sonrasında UseEndpointseklenmelidir.
  • Terminal ara yazılımının doğru konuma yerleştirilebilmesi için uygulamanın araması UseRoutingUseEndpoints gerekir.
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

Terminal ara yazılımı, isteği hiçbir uç nokta işlemezse çalışan ara yazılımdır.

En Düşük API'lerde sahteciliğe karşı koruma ara yazılımı hakkında bilgi için bkz . ASP.NET Core'da Siteler Arası İstek Sahteciliği (XSRF/CSRF) saldırılarını önleme

Ara yazılım hakkında daha fazla bilgi için bkz . ASP.NET Core Ara Yazılımı ve uygulamalara eklenebilen yerleşik ara yazılım listesi.

Minimum API'ler hakkında daha fazla bilgi için bkz Minimal APIs overview. .