Aracılığıyla paylaş


ASP.NET Core'da uygulama başlatma

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 9 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.

Gönderen Rick Anderson

Web şablonlarıyla oluşturulan ASP.NET Core uygulamaları, Program.cs dosyasındaki uygulama başlangıç kodunu içerir.

Blazor Bu makaledeki yönergeleri ekleyen veya yerine geçen başlangıç kılavuzu için bkz. ASP.NET Core Blazor başlatma.

Aşağıdaki uygulama başlangıç kodu çeşitli uygulama türlerini destekler:

using WebAll.Components;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseAuthorization();

app.MapGet("/hi", () => "Hello!");

app.MapDefaultControllerRoute();
app.MapRazorPages();

app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode();

app.UseAntiforgery();

app.Run();

EventSource kullanan uygulamalar, başlangıç performansını anlamak ve iyileştirmek için başlangıç süresini ölçebilir. Microsoft.AspNetCore.Hosting'daki ServerReady olayı, sunucunun isteklere yanıt vermeye hazır olduğu noktayı temsil eder.

Başlangıç filtreleriyle Başlangıç'ı genişletme

IStartupFilter kullanın:

  • Bir uygulamanın ara yazılım işlem hattının başında veya sonunda ara yazılımı açık bir çağrı olmadan yapılandırmak için Use{Middleware}. Varsayılan ara yazılımı açıkça kaydetmeden işlem hattının başına varsayılan değerleri eklemek için kullanın IStartupFilter . IStartupFilter farklı bir bileşenin uygulama yazarı adına arama Use{Middleware} yapmasına izin verir.
  • Yöntemlerden oluşan Configure bir işlem hattı oluşturmak için. IStartupFilter.Configure , kitaplıklar tarafından eklenen ara yazılımdan önce veya sonra çalışacak bir ara yazılım ayarlayabilir.

IStartupFilter uygulaması, Action<IApplicationBuilder>alan ve döndüren Configureuygular. , IApplicationBuilder bir uygulamanın istek işlem hattını yapılandırmak için bir sınıf tanımlar. Daha fazla bilgi için bkz . IApplicationBuilder ile ara yazılım işlem hattı oluşturma.

Her IStartupFilter uygulaması, istek işlem hattına bir veya daha fazla ara yazılım ekleyebilir. Filtreler, hizmet kapsayıcısına eklendikleri sırayla çağrılır. Filtreler, denetimi bir sonraki filtreye geçirmeden önce veya sonra ara yazılım ekleyebilir, bu nedenle uygulama işlem hattının başına veya sonuna eklenir.

Aşağıdaki örnekte ile IStartupFilterara yazılım kaydetme işlemi gösterilmektedir. Ara yazılım, RequestSetOptionsMiddleware sorgu dizesi parametresinden bir seçenek değeri ayarlar:

public class RequestSetOptionsMiddleware
{
    private readonly RequestDelegate _next;

    public RequestSetOptionsMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    // Test with https://localhost:5001/Privacy/?option=Hello
    public async Task Invoke(HttpContext httpContext)
    {
        var option = httpContext.Request.Query["option"];

        if (!string.IsNullOrWhiteSpace(option))
        {
            httpContext.Items["option"] = WebUtility.HtmlEncode(option);
        }

        await _next(httpContext);
    }
}

RequestSetOptionsMiddleware sınıfında yapılandırılırRequestSetOptionsStartupFilter:

public class RequestSetOptionsStartupFilter : IStartupFilter
{
    public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
    {
        return builder =>
        {
            builder.UseMiddleware<RequestSetOptionsMiddleware>();
            next(builder);
        };
    }
}

IStartupFilter uygulaması Program.cs'e kaydedildi.

using WebStartup.Middleware;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddTransient<IStartupFilter,
                      RequestSetOptionsStartupFilter>();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

için option bir sorgu dizesi parametresi sağlandığında ara yazılım, ASP.NET Core ara yazılımı yanıtı işlemeden önce değer atamasını işler:

@page
@model PrivacyModel
@{
    ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>

<p> Append query string ?option=hello</p>
Option String: @HttpContext.Items["option"];

Ara yazılım yürütme sırası, kayıtların IStartupFilter sırasına göre ayarlanır:

  • Birden çok IStartupFilter uygulaması aynı nesnelerle etkileşimde olabilir. Sıralama önemliyse, hizmet kayıtlarını ara yazılımlarının çalışması gereken siparişle eşleşecek şekilde sipariş IStartupFilter edin.

  • Kitaplıklar, bir veya daha fazla IStartupFilter uygulaması içeren ara yazılımlarını, IStartupFilterile kaydedilen diğer uygulama ara yazılımlarından önce veya sonra çalışacak şekilde ekleyebilir. Kitaplığın IStartupFilter tarafından eklenen ara yazılımdan önce ara yazılımı çağırmak IStartupFilteriçin:

    • Kitaplık hizmet kapsayıcısına eklenmeden önce hizmet kaydını konumlandırın.
    • Daha sonra çağırmak için, kitaplık eklendikten sonra hizmet kaydını konumlandırın.

Configuregeçersiz kıldığınızda ASP.NET Core uygulamasını genişletemezsiniz. Daha fazla bilgi için bu GitHub konusuna bakın.

Dış derlemeden başlangıçta yapılandırma ekleme

Uygulama IHostingStartup , uygulamanın dosyasının dışındaki bir dış derlemeden başlangıçta uygulamaya Program.cs iyileştirmeler eklemeye olanak tanır. Daha fazla bilgi için, bkz. ASP.NET Core'da barındırma başlangıç derlemelerini kullanma.

Başlatma, YapılandırmaHizmetleri ve Yapılandırma

ve ConfigureServices yöntemlerini en düşük barındırma modeliyle kullanma Configure hakkında bilgi için bkz:

Web şablonlarıyla oluşturulan ASP.NET Core uygulamaları, Program.cs dosyasındaki uygulama başlangıç kodunu içerir.

Aşağıdaki uygulama başlangıç kodu aşağıdakileri destekler:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseAuthorization();

app.MapGet("/hi", () => "Hello!");

app.MapDefaultControllerRoute();
app.MapRazorPages();

app.Run();

Uygulama başlatma hakkında daha fazla bilgi için bkz . ASP.NET Temel bilgilere genel bakış.

Başlangıç filtreleriyle Başlangıç'ı genişletme

IStartupFilter kullanın:

  • Bir uygulamanın ara yazılım işlem hattının başında veya sonunda ara yazılımı açık bir çağrı olmadan yapılandırmak için Use{Middleware}. Varsayılan ara yazılımı açıkça kaydetmeden işlem hattının başına varsayılan değerleri eklemek için kullanın IStartupFilter . IStartupFilter farklı bir bileşenin uygulama yazarı adına arama Use{Middleware} yapmasına izin verir.
  • Yöntemlerden oluşan Configure bir işlem hattı oluşturmak için. IStartupFilter.Configure , kitaplıklar tarafından eklenen ara yazılımdan önce veya sonra çalışacak bir ara yazılım ayarlayabilir.

IStartupFilter Configure, alır ve döndürür Action<IApplicationBuilder>uygular. , IApplicationBuilder bir uygulamanın istek işlem hattını yapılandırmak için bir sınıf tanımlar. Daha fazla bilgi için bkz . IApplicationBuilder ile ara yazılım işlem hattı oluşturma.

Her IStartupFilter biri istek işlem hattına bir veya daha fazla ara yazılım ekleyebilir. Filtreler, hizmet kapsayıcısına eklendikleri sırayla çağrılır. Filtreler, denetimi bir sonraki filtreye geçirmeden önce veya sonra ara yazılım ekleyebilir, bu nedenle uygulama işlem hattının başına veya sonuna eklenir.

Aşağıdaki örnekte ile IStartupFilterara yazılım kaydetme işlemi gösterilmektedir. Ara yazılım, RequestSetOptionsMiddleware sorgu dizesi parametresinden bir seçenek değeri ayarlar:

public class RequestSetOptionsMiddleware
{
    private readonly RequestDelegate _next;

    public RequestSetOptionsMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    // Test with https://localhost:5001/Privacy/?option=Hello
    public async Task Invoke(HttpContext httpContext)
    {
        var option = httpContext.Request.Query["option"];

        if (!string.IsNullOrWhiteSpace(option))
        {
            httpContext.Items["option"] = WebUtility.HtmlEncode(option);
        }

        await _next(httpContext);
    }
}

RequestSetOptionsMiddleware sınıfında yapılandırılırRequestSetOptionsStartupFilter:

namespace WebStartup.Middleware;
// <snippet1>
public class RequestSetOptionsStartupFilter : IStartupFilter
{
    public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
    {
        return builder =>
        {
            builder.UseMiddleware<RequestSetOptionsMiddleware>();
            next(builder);
        };
    }
}
// </snippet1>

IStartupFilter içinde kayıtlıdırProgram.cs:

using WebStartup.Middleware;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddTransient<IStartupFilter,
                      RequestSetOptionsStartupFilter>();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

için option bir sorgu dizesi parametresi sağlandığında ara yazılım, ASP.NET Core ara yazılımı yanıtı işlemeden önce değer atamasını işler:

@page
@model PrivacyModel
@{
    ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>

<p> Append query string ?option=hello</p>
Option String: @HttpContext.Items["option"];

Ara yazılım yürütme sırası, kayıtların IStartupFilter sırasına göre ayarlanır:

  • Birden çok IStartupFilter uygulama aynı nesnelerle etkileşime geçebilir. Sıralama önemliyse, hizmet kayıtlarını ara yazılımlarının çalışması gereken siparişle eşleşecek şekilde sipariş IStartupFilter edin.

  • Kitaplıklar, ile kaydedilen diğer uygulama ara yazılımından önce veya sonra çalışan bir veya daha fazla IStartupFilter uygulamayla IStartupFilterara yazılım ekleyebilir. Kitaplığın IStartupFilter tarafından eklenen ara yazılımdan önce ara yazılımı çağırmak IStartupFilteriçin:

    • Kitaplık hizmet kapsayıcısına eklenmeden önce hizmet kaydını konumlandırın.
    • Daha sonra çağırmak için, kitaplık eklendikten sonra hizmet kaydını konumlandırın.

Not: ASP.NET Core uygulamasını geçersiz kıldığınızda Configuregenişletemezsiniz. Daha fazla bilgi için bu GitHub konusuna bakın.

Dış derlemeden başlangıçta yapılandırma ekleme

Uygulama IHostingStartup , uygulamanın dosyasının dışındaki bir dış derlemeden başlangıçta uygulamaya Program.cs iyileştirmeler eklemeye olanak tanır. Daha fazla bilgi için, bkz. ASP.NET Core'da barındırma başlangıç derlemelerini kullanma.

Startup sınıfı hizmetleri ve uygulamanın istek işlem hattını yapılandırmaktadır.

Başlangıç sınıfı

ASP.NET Core uygulamaları, kural tarafından adlandırılan Startup bir Startup sınıf kullanır. Startup sınıfı:

  • İsteğe bağlı olarak, uygulamanın ConfigureServices yapılandırmak için bir yöntem içerir. Hizmet, uygulama işlevselliği sağlayan yeniden kullanılabilir bir bileşendir. ConfigureServices ve bağımlılık ekleme (DI)ApplicationServicestüketilir.
  • Uygulamanın istek işleme işlem hattını oluşturmak için bir Configure yöntem içerir.

ConfigureServices ve Configure uygulama başlatıldığında ASP.NET Core çalışma zamanı tarafından çağrılır:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
        });
    }
}

Yukarıdaki örnek SayfalarRazor; MVC sürümü benzerdir.

Sınıfı Startup , uygulamanın konağı oluşturulduğunda belirtilir. Startup sınıfı genellikle konak oluşturucusunun WebHostBuilderExtensions.UseStartup/<TStartup> yöntemini çağırarak belirtilir:

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

Konak, sınıf oluşturucusunun Startup kullanabileceği hizmetler sağlar. Uygulama aracılığıyla ConfigureServicesek hizmetler ekler. Hem konak hem de uygulama hizmetleri uygulamada ve uygulama genelinde kullanılabilir Configure .

Genel Ana Bilgisayar (Startup) kullanılırken oluşturucuya IHostBuilder yalnızca aşağıdaki hizmet türleri eklenebilir:

public class Startup
{
    private readonly IWebHostEnvironment _env;

    public Startup(IConfiguration configuration, IWebHostEnvironment env)
    {
        Configuration = configuration;
        _env = env;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        if (_env.IsDevelopment())
        {
        }
        else
        {
        }
    }
}

Yöntem çağrılana Configure kadar çoğu hizmet kullanılamaz.

Birden Çok Başlangıç

Uygulama farklı ortamlar için ayrı Startup sınıflar tanımladığında (örneğin, StartupDevelopment), çalışma zamanında uygun Startup sınıf seçilir. Ad soneki geçerli ortamla eşleşen sınıf önceliklendirilir. Uygulama Geliştirme ortamında çalıştırılırsa ve hem sınıf Startup hem de sınıf StartupDevelopment içeriyorsa, StartupDevelopment sınıfı kullanılır. Daha fazla bilgi için bkz . Birden çok ortam kullanma.

Konak hakkında daha fazla bilgi için bkz. Konak. Başlatma sırasındaki hataları işleme hakkında bilgi için bkz . Başlangıç özel durum işleme.

ConfigureServices yöntemi

Yöntemi ConfigureServices şu şekildedir:

  • isteğe bağlı.
  • Uygulamanın hizmetlerini yapılandırmak için yönteminden Configure önce konak tarafından çağrılır.
  • Yapılandırma seçeneklerinin kurala göre ayarlandığı yer.

Konak, yöntemler çağrılmadan önce Startup bazı hizmetleri yapılandırabilir. Daha fazla bilgi için bkz . Konak.

Önemli kurulum gerektiren özellikler için üzerinde Add{Service}uzantı yöntemleri vardırIServiceCollection. Örneğin, DbContext Ekle, DefaultIdentity Ekle, EntityFrameworkStores Ekleve RazorPages Ekle:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
        services.AddDefaultIdentity<IdentityUser>(
            options => options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>();

        services.AddRazorPages();
    }

Hizmet kapsayıcısına hizmet eklemek, bunların uygulama içinde ve yönteminde Configure kullanılabilir olmasını sağlar. Hizmetler, bağımlılık eklemeApplicationServices.

Configure yöntemi

Configure yöntemi, uygulamanın HTTP isteklerine nasıl yanıt vereceğini belirtmek için kullanılır. İstek işlem hattı, bir örneğe ara yazılımIApplicationBuilderyapılandırılır. IApplicationBuilder yöntemi tarafından Configure kullanılabilir, ancak hizmet kapsayıcısında kayıtlı değildir. Barındırma bir IApplicationBuilder oluşturur ve doğrudan öğesine Configuregeçirir.

ASP.NET Core şablonları işlem hattını aşağıdakiler için destekle yapılandırmaktadır:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
        });
    }
}

Yukarıdaki örnek SayfalarRazor; MVC sürümü benzerdir.

Her Use uzantı yöntemi, istek işlem hattına bir veya daha fazla ara yazılım bileşeni ekler. Örneğin, ara yazılımı statik dosyalaraUseStaticFilesvermek üzere yapılandırır.

İstek işlem hattındaki her ara yazılım bileşeni, uygunsa işlem hattında sonraki bileşeni çağırmaktan veya zinciri kısa devreden sorumludur.

yöntem imzasında IWebHostEnvironment , ILoggerFactoryveya içinde tanımlanan ConfigureServicesherhangi bir şey gibi Configureek hizmetler belirtilebilir. Bu hizmetler kullanılabilir durumdaysa eklenir.

Nasıl kullanılacağı IApplicationBuilder ve ara yazılım işleme sırası hakkında daha fazla bilgi için bkz . ASP.NET Core Ara Yazılımı.

Başlatma olmadan hizmetleri yapılandırma

Hizmetleri ve istek işleme işlem hattını sınıf Startup kullanmadan yapılandırmak için konak oluşturucusunun çağrı ConfigureServices ve Configure kolaylık yöntemlerini çağırın. Birbirinin sonuna ConfigureServices eklenecek birden çok çağrı. Birden çok Configure yöntem çağrısı varsa, son Configure çağrı kullanılır.

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureServices(services =>
                {
                    services.AddControllersWithViews();
                })
                .Configure(app =>
                {
                    var loggerFactory = app.ApplicationServices
                        .GetRequiredService<ILoggerFactory>();
                    var logger = loggerFactory.CreateLogger<Program>();
                    var env = app.ApplicationServices.GetRequiredService<IWebHostEnvironment>();
                    var config = app.ApplicationServices.GetRequiredService<IConfiguration>();

                    logger.LogInformation("Logged in Configure");

                    if (env.IsDevelopment())
                    {
                        app.UseDeveloperExceptionPage();
                    }
                    else
                    {
                        app.UseExceptionHandler("/Home/Error");
                        app.UseHsts();
                    }

                    var configValue = config["MyConfigKey"];
                });
            });
        });
}

Başlangıç filtreleriyle Başlangıç'ı genişletme

IStartupFilter kullanın:

  • Bir uygulamanın Ara yazılım işlem hattını açık bir çağrısı olmadan yapılandırma işleminin başında veya sonunda ara yazılımı yapılandırmak için Use{Middleware}. IStartupFilter ASP.NET Core tarafından, uygulama yazarının varsayılan ara yazılımı açıkça kaydetmesine gerek kalmadan işlem hattının başına varsayılan değerler eklemek için kullanılır. IStartupFilter farklı bir bileşenin uygulama yazarı adına arama Use{Middleware} yapmasına izin verir.
  • Yöntemlerden oluşan Configure bir işlem hattı oluşturmak için. IStartupFilter.Configure , kitaplıklar tarafından eklenen ara yazılımdan önce veya sonra çalışacak bir ara yazılım ayarlayabilir.

IStartupFilter Configure, alır ve döndürür Action<IApplicationBuilder>uygular. , IApplicationBuilder bir uygulamanın istek işlem hattını yapılandırmak için bir sınıf tanımlar. Daha fazla bilgi için bkz . IApplicationBuilder ile ara yazılım işlem hattı oluşturma.

Her IStartupFilter biri istek işlem hattına bir veya daha fazla ara yazılım ekleyebilir. Filtreler, hizmet kapsayıcısına eklendikleri sırayla çağrılır. Filtreler, denetimi bir sonraki filtreye geçirmeden önce veya sonra ara yazılım ekleyebilir, bu nedenle uygulama işlem hattının başına veya sonuna eklenir.

Aşağıdaki örnekte ile IStartupFilterara yazılım kaydetme işlemi gösterilmektedir. Ara yazılım, RequestSetOptionsMiddleware sorgu dizesi parametresinden bir seçenek değeri ayarlar:

public class RequestSetOptionsMiddleware
{
    private readonly RequestDelegate _next;

    public RequestSetOptionsMiddleware( RequestDelegate next )
    {
        _next = next;
    }

    // Test with https://localhost:5001/Privacy/?option=Hello
    public async Task Invoke(HttpContext httpContext)
    {
        var option = httpContext.Request.Query["option"];

        if (!string.IsNullOrWhiteSpace(option))
        {
            httpContext.Items["option"] = WebUtility.HtmlEncode(option);
        }

        await _next(httpContext);
    }
}

RequestSetOptionsMiddleware sınıfında yapılandırılırRequestSetOptionsStartupFilter:

public class RequestSetOptionsStartupFilter : IStartupFilter
{
    public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
    {
        return builder =>
        {
            builder.UseMiddleware<RequestSetOptionsMiddleware>();
            next(builder);
        };
    }
}

içindeki IStartupFilter hizmet kapsayıcısında ConfigureServiceskayıtlıdır.

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
           .ConfigureAppConfiguration((hostingContext, config) =>
           {
           })
         .ConfigureWebHostDefaults(webBuilder =>
         {
             webBuilder.UseStartup<Startup>();
         })
        .ConfigureServices(services =>
        {
            services.AddTransient<IStartupFilter,
                      RequestSetOptionsStartupFilter>();
        });
}

için option bir sorgu dizesi parametresi sağlandığında ara yazılım, ASP.NET Core ara yazılımı yanıtı işlemeden önce değer atamasını işler.

Ara yazılım yürütme sırası, kayıtların IStartupFilter sırasına göre ayarlanır:

  • Birden çok IStartupFilter uygulama aynı nesnelerle etkileşime geçebilir. Sıralama önemliyse, hizmet kayıtlarını ara yazılımlarının çalışması gereken siparişle eşleşecek şekilde sipariş IStartupFilter edin.

  • Kitaplıklar, ile kaydedilen diğer uygulama ara yazılımından önce veya sonra çalışan bir veya daha fazla IStartupFilter uygulamayla IStartupFilterara yazılım ekleyebilir. Kitaplığın IStartupFilter tarafından eklenen ara yazılımdan önce ara yazılımı çağırmak IStartupFilteriçin:

    • Kitaplık hizmet kapsayıcısına eklenmeden önce hizmet kaydını konumlandırın.
    • Daha sonra çağırmak için, kitaplık eklendikten sonra hizmet kaydını konumlandırın.

Dış derlemeden başlangıçta yapılandırma ekleme

Bir IHostingStartup uygulaması, uygulamanın Startup sınıfı dışındaki bir dış derlemeden başlangıçta bir uygulamaya geliştirmeler eklemeye izin verir. Daha fazla bilgi için, bkz. ASP.NET Core'da barındırma başlangıç derlemelerini kullanma.

Ek kaynaklar