Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Note
Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakın.
Warning
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 10 sürümüne bakın.
Tarafından Rick Anderson
Web şablonlarıyla oluşturulan ASP.NET Core uygulamalar, Program.cs dosyasındaki uygulama başlatma 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:
- Blazor Web AppS
- Razor Sayfaları
- Görünümlere sahip MVC denetleyicileri
- Denetleyicilerle web API'si
- Minimum API'ler
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();
kullanan EventSource uygulamalar, başlangıç performansını anlamak ve iyileştirmek için başlangıç süresini ölçebilir. içindeki Microsoft.AspNetCore.Hosting 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 akışının başında veya sonunda, açık bir çağrı yapmadan ara yazılımı 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ınIStartupFilter.IStartupFilterfarklı bir bileşenin uygulama geliştiricisi adınaUse{Middleware}çağrı yapmasına müsaade eder.Yöntemlerden oluşan
Configurebir 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.
Bir IStartupFilter uygulama, bir Configure Action<IApplicationBuilder> alan ve döndüren bir yöntem sağlar. , 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 örnek, IStartupFilter ile bir middleware kaydetme işlemini göstermektedir. 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, RequestSetOptionsStartupFilter sınıfında yapılandırılır:
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
Uygulama IStartupFilterProgram.cs dosyasına kaydedilir:
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
IStartupFilteruygulaması aynı nesnelerle etkileşimde olabilir. Sıra önemliyse, hizmet kayıtlarını ara yazılımlarının çalışması gereken sıraya uygun olacak şekilde sırayaIStartupFilterkoyun.Kitaplıklar, bir veya daha fazla
IStartupFilteruygulaması içeren ara yazılımlarını,IStartupFilterile kaydedilen diğer uygulama ara yazılımlarından önce veya sonra çalışacak şekilde ekleyebilir. Bir kitaplık tarafından eklenen bir ara yazılımdan önce birIStartupFilterara yazılımı çağırmak için:Hizmet kapsayıcısına kütüphane eklenmeden önce hizmet kaydını konumlandırın.
Hizmeti 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 bkz. GitHub /dotnet/aspnetcore/issues #45372.
Dış derlemeden başlangıçta yapılandırma ekleme
Uygulama, IHostingStartup uygulama Program.cs dosyasının dışındaki bir dış derlemeden başlangıçta uygulamaya iyileştirmeler eklenmesine 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
Minimal barındırma modeliyle birlikte ConfigureServices ve Configure yöntemlerini kullanma hakkında bilgi için bkz:
İlgili içerik
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 akışının başında veya sonunda, açık bir çağrı yapmadan ara yazılımı 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ınIStartupFilter.IStartupFilterfarklı bir bileşenin uygulama geliştiricisi adınaUse{Middleware}çağrı yapmasına müsaade eder. - Yöntemlerden oluşan
Configurebir 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'yi alır ve döndürerek uygular, bu bir Action<IApplicationBuilder> ile ilgilidir. , 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 IStartupFilter ile bir ara yazılımın nasıl kaydedileceği 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, RequestSetOptionsStartupFilter sınıfında yapılandırılır:
namespace WebStartup.Middleware;
// <snippet1>
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
// </snippet1>
IStartupFilter, Program.cs içinde kayıtlıdır.
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
IStartupFilteruygulama aynı nesnelerle etkileşime geçebilir. Sıralama önemliyse, hizmet kayıtlarını ara yazılımlarının çalışması gereken sırayla eşleşecek şekildeIStartupFiltersıralayın.Kitaplıklar,
IStartupFilteruygulamalarını içeren bir veya daha fazla ara yazılımı,IStartupFilterile kaydedilen diğer uygulama ara yazılımlarından önce veya sonra çalışacak şekilde ekleyebilir. KitaplığınIStartupFiltertarafından eklenen bir ara yazılımdan önce, ara yazılım eklemek içinIStartupFilterara yazılımı çağırmak.- Kütüphaneyi hizmet kapsayıcısına eklemeden önce hizmet kaydını konumlandırın.
- Daha sonra çağırmak için, kütüphane 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
Bir IHostingStartup uygulaması, uygulamanın Program.cs dosyasının dışındaki bir dış derlemeden başlangıçta uygulamaya geliş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ı, standart olarak Startup adı verilen bir Startup sınıfı kullanır.
Startup sınıfı:
- İsteğe bağlı olarak uygulamanın hizmetlerini yapılandırmak için bir ConfigureServices yöntemi içerir. Hizmet, uygulama işlevselliği sağlayan yeniden kullanılabilir bir bileşendir. Hizmetler kaydedilir ve uygulama genelinde bağımlılık ekleme (DI) veya ApplicationServices aracılığıyla tü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
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>();
});
}
Sunucu, Startup sınıf oluşturucusunun kullanabileceği hizmetler sağlar. Uygulama ConfigureServices aracılığıyla ek hizmetler ekler. Ana bilgisayar ve uygulama hizmetleri, gerek Configure gerekse uygulama genelinde kullanılabilir.
Yalnızca aşağıdaki hizmet türleri Startup oluşturucuya Genel Ana Bilgisayar (IHostBuilder) kullanılırken 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
{
}
}
}
Çoğu hizmet, Configure yöntemi çağrılana kadar kullanılamayacaktır.
Birden Çok Girişim
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. Mevcut çevre ile ad eki eşleşen sınıfa öncelik verilir. Uygulama ortamda Development ç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.
Sunucu hakkında daha fazla bilgi için Sunucu'yu inceleyin. 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:
- Optional.
- Yöntem
Configureçalıştırılmadan önce, uygulamanın hizmetlerini yapılandırmak için ana bilgisayar tarafından çağrılır. - Yapılandırma seçeneklerinin kurala göre ayarlandığı yer.
Sunucu, 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 Configure yönteminde kullanılabilir olmasını sağlar. Hizmetler, bağımlılık enjeksiyonu veya ApplicationServices aracılığıyla çözülür.
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ı, ara yazılım bileşenlerinin bir IApplicationBuilder örneğine eklenmesiyle yapılandırılır.
IApplicationBuilder
Configure metoduna kullanılabilir, ancak hizmet kapsayıcısında kayıtlı değildir. Barındırma bir IApplicationBuilder oluşturur ve bunu doğrudan Configure öğesine geçirir.
ASP.NET Core şablonları işlem hattını aşağıdakiler için destekle yapılandırmaktadır:
- Geliştirici Özel Durum Sayfası
- Özel durum işleyicisi
- HTTP Katı Aktarım Güvenliği (HSTS)
- HTTPS yeniden yönlendirme
- Statik dosyalar
- ASP.NET Core MVC ve Razor Pages
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
Her Use uzantı yöntemi, istek işlem hattına bir veya daha fazla ara yazılım bileşeni ekler. Örneğin, UseStaticFiles statik dosyaları ara yazılımın sunması için yapılandırır.
İstek işlem hattındaki her ara yazılım bileşeni, işlem hattında sonraki bileşeni çağırmak veya uygunsa zinciri kısa devre yapmakla yükümlüdür.
Yöntem imzasında, IWebHostEnvironment gibi ek hizmetler, ILoggerFactory veya ConfigureServices içinde tanımlanan herhangi bir şey 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ı bir Startup sınıfı kullanmadan yapılandırmak için host builder'ı üzerinde 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}.IStartupFilterASP.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.IStartupFilterfarklı bir bileşenin uygulama geliştiricisi adınaUse{Middleware}çağrı yapmasına müsaade eder. - Yöntemlerden oluşan
Configurebir 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'yi alır ve döndürerek uygular, bu bir Action<IApplicationBuilder> ile ilgilidir. , 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 örnek, IStartupFilter ile bir middleware kaydetme işlemini göstermektedir. 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, RequestSetOptionsStartupFilter sınıfında yapılandırılır:
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
IStartupFilter hizmet kapsayıcısında ConfigureServices kayı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
IStartupFilteruygulama aynı nesnelerle etkileşime geçebilir. Sıra önemliyse, hizmet kayıtlarını ara yazılımlarının çalışması gereken sıraya uygun olacak şekilde sırayaIStartupFilterkoyun.Kütüphaneler,
IStartupFilterile kaydedilen diğer ara yazılımlardan önce veya sonra çalışan bir veya daha fazlaIStartupFilteruygulaması içeren ara yazılım ekleyebilir. Bir kitaplık tarafından eklenen bir ara yazılımdan önce birIStartupFilterara yazılımı çağırmak için:- Hizmet kapsayıcısına kütüphane eklenmeden önce hizmet kaydını konumlandırın.
- Hizmeti 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
ASP.NET Core