Aracılığıyla paylaş


Minimal API uygulamalarında ara yazılım

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 9 sürümüne bakın.

Uyarı

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 9 sürümüne bakın.

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ı UseAuthentication UseAuthorization 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ı UseRouting UseEndpoints 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ı UseAuthentication UseAuthorization 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ı UseRouting UseEndpoints 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. .