ASP.NET Core'da uygulama başlatma
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.
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 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();
EventSource kullanan uygulamalar, başlangıç performansını anlamak ve iyileştirmek için başlangıç süresini ölçebilir. ServerReady
içindeki Microsoft.AspNetCore.Hosting olayı, sunucunun isteklere yanıt vermeye hazır olduğu noktayı temsil eder.
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ınIStartupFilter
.IStartupFilter
farklı bir bileşenin uygulama yazarı adına aramaUse{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 IStartupFilter
ara 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
uygulamaylaIStartupFilter
ara yazılım ekleyebilir. KitaplığınIStartupFilter
tarafından eklenen ara yazılımdan önce ara yazılımı çağırmakIStartupFilter
iç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 Configure
genişletemezsiniz. Daha fazla bilgi için bu GitHub sorununa 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 Configure yöntemlerini en düşük barındırma modeliyle kullanma ConfigureServices hakkında bilgi için bkz:
- Minimum barındırma modeliyle Başlangıç'ı kullanma
- Bu makalenin ASP.NET Core 5.0 sürümü:
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ınIStartupFilter
.IStartupFilter
farklı bir bileşenin uygulama yazarı adına aramaUse{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 IStartupFilter
ara 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
uygulamaylaIStartupFilter
ara yazılım ekleyebilir. KitaplığınIStartupFilter
tarafından eklenen ara yazılımdan önce ara yazılımı çağırmakIStartupFilter
iç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 Configure
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.
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 hizmetlerini yapılandırmak için bir ConfigureServices yöntem içerir. Hizmet, uygulama işlevselliği sağlayan yeniden kullanılabilir bir bileşendir. Hizmetler uygulamasına
ConfigureServices
kaydedilir ve bağımlılık ekleme (DI) veya ApplicationServicesaracılığıyla uygulama genelinde 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 Sayfalar içindirRazor; 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 ConfigureServices
ek hizmetler ekler. Hem konak hem de uygulama hizmetleri uygulamada ve uygulama genelinde kullanılabilir Configure
.
Genel Ana Bilgisayar (IHostBuilder) kullanılırken oluşturucuya Startup
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 IServiceCollectionuzantı yöntemleri vardırAdd{Service}
. Ö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 ekleme veya öğesinden ApplicationServicesçözümlenir.
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 IApplicationBuilder örneğe ara yazılım bileşenleri eklenerek yapı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 Configure
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 Çekirdek MVC ve Razor Sayfaları
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 Sayfalar içindirRazor; 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 dosyalara hizmet vermek üzere yapılandırır. UseStaticFiles
İ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 Configure
, ILoggerFactory
veya içinde tanımlanan ConfigureServices
herhangi bir şey gibi IWebHostEnvironment
ek 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 aramaUse{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 IStartupFilter
ara 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
uygulamaylaIStartupFilter
ara yazılım ekleyebilir. KitaplığınIStartupFilter
tarafından eklenen ara yazılımdan önce ara yazılımı çağırmakIStartupFilter
iç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
ASP.NET Core