Startup aplikasi di ASP.NET Core
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Penting
Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Untuk rilis saat ini, lihat versi .NET 9 dari artikel ini.
Oleh Rick Anderson
Aplikasi ASP.NET Core yang dibuat dengan template web berisi kode pengaktifan aplikasi dalam file Program.cs
.
Untuk Blazor panduan startup, yang menambahkan atau menggantikan panduan dalam artikel ini, lihat startup ASP.NET CoreBlazor.
Kode startup aplikasi berikut mendukung:
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();
Aplikasi yang menggunakan EventSource dapat mengukur waktu startup untuk memahami dan mengoptimalkan performa startup. Peristiwa ServerReady
di Microsoft.AspNetCore.Hosting mewakili titik di mana server siap merespons permintaan.
Untuk informasi selengkapnya tentang pengaktifan aplikasi, lihat gambaran umum dasar-dasar ASP.NET Core.
Perluas Startup dengan filter startup
Gunakan IStartupFilter:
- Untuk mengonfigurasi middleware di awal atau akhir alur middleware aplikasi tanpa panggilan eksplisit ke
Use{Middleware}
. GunakanIStartupFilter
untuk menambahkan default ke awal alur tanpa secara eksplisit mendaftarkan middleware default.IStartupFilter
memungkinkan komponen yang berbeda untuk memanggilUse{Middleware}
atas nama penulis aplikasi. - Untuk membuat alur
Configure
metode. IStartupFilter.Configure dapat mengatur middleware untuk dijalankan sebelum atau sesudah middleware ditambahkan oleh pustaka.
IStartupFilter
Configuremengimplementasikan , yang menerima dan mengembalikan Action<IApplicationBuilder>
. Menentukan IApplicationBuilder kelas untuk mengonfigurasi alur permintaan aplikasi. Untuk informasi selengkapnya, lihat Membuat alur middleware dengan IApplicationBuilder.
Masing-masing IStartupFilter
dapat menambahkan satu atau beberapa middleware dalam alur permintaan. Filter dipanggil dalam urutan ditambahkan ke kontainer layanan. Filter dapat menambahkan middleware sebelum atau sesudah meneruskan kontrol ke filter berikutnya, sehingga ditambahkan ke awal atau akhir alur aplikasi.
Contoh berikut menunjukkan cara mendaftarkan middleware dengan IStartupFilter
. Middleware RequestSetOptionsMiddleware
menetapkan nilai opsi dari parameter string kueri:
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);
}
}
dikonfigurasi RequestSetOptionsMiddleware
di RequestSetOptionsStartupFilter
kelas :
namespace WebStartup.Middleware;
// <snippet1>
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
// </snippet1>
IStartupFilter
terdaftar di Program.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();
Saat parameter string kueri untuk option
disediakan, middleware memproses penetapan nilai sebelum middleware ASP.NET Core merender respons:
@page
@model PrivacyModel
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p> Append query string ?option=hello</p>
Option String: @HttpContext.Items["option"];
Urutan eksekusi middleware ditetapkan oleh urutan IStartupFilter
pendaftaran:
Beberapa
IStartupFilter
implementasi dapat berinteraksi dengan objek yang sama. Jika pemesanan penting, pesan pendaftaran layanan merekaIStartupFilter
agar sesuai dengan urutan yang harus dijalankan middleware mereka.Pustaka dapat menambahkan middleware dengan satu atau beberapa
IStartupFilter
implementasi yang berjalan sebelum atau sesudah middleware aplikasi lain yang terdaftar denganIStartupFilter
. Untuk memanggilIStartupFilter
middleware sebelum middleware ditambahkan oleh pustakaIStartupFilter
:- Posisikan pendaftaran layanan sebelum pustaka ditambahkan ke kontainer layanan.
- Untuk memanggil setelahnya, posisikan pendaftaran layanan setelah pustaka ditambahkan.
Catatan: Anda tidak dapat memperluas aplikasi ASP.NET Core saat mengambil alih Configure
. Untuk informasi selengkapnya, lihat masalah GitHub ini.
Menambahkan konfigurasi saat startup dari rakitan eksternal
Implementasi IHostingStartup memungkinkan penambahan penyempurnaan ke aplikasi saat startup dari rakitan eksternal di luar file aplikasi Program.cs
. Untuk informasi selengkapnya, lihat Menggunakan rakitan startup hosting di ASP.NET Core.
Memulai, MengonfigurasiServices, dan Mengonfigurasi
Untuk informasi tentang menggunakan ConfigureServices metode dan Configure dengan model hosting minimal, lihat:
Aplikasi ASP.NET Core yang dibuat dengan template web berisi kode pengaktifan aplikasi dalam file Program.cs
.
Kode startup aplikasi berikut mendukung:
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();
Untuk informasi selengkapnya tentang pengaktifan aplikasi, lihat gambaran umum dasar-dasar ASP.NET Core.
Perluas Startup dengan filter startup
Gunakan IStartupFilter:
- Untuk mengonfigurasi middleware di awal atau akhir alur middleware aplikasi tanpa panggilan eksplisit ke
Use{Middleware}
. GunakanIStartupFilter
untuk menambahkan default ke awal alur tanpa secara eksplisit mendaftarkan middleware default.IStartupFilter
memungkinkan komponen yang berbeda untuk memanggilUse{Middleware}
atas nama penulis aplikasi. - Untuk membuat alur
Configure
metode. IStartupFilter.Configure dapat mengatur middleware untuk dijalankan sebelum atau sesudah middleware ditambahkan oleh pustaka.
IStartupFilter
Configuremengimplementasikan , yang menerima dan mengembalikan Action<IApplicationBuilder>
. Menentukan IApplicationBuilder kelas untuk mengonfigurasi alur permintaan aplikasi. Untuk informasi selengkapnya, lihat Membuat alur middleware dengan IApplicationBuilder.
Masing-masing IStartupFilter
dapat menambahkan satu atau beberapa middleware dalam alur permintaan. Filter dipanggil dalam urutan ditambahkan ke kontainer layanan. Filter dapat menambahkan middleware sebelum atau sesudah meneruskan kontrol ke filter berikutnya, sehingga ditambahkan ke awal atau akhir alur aplikasi.
Contoh berikut menunjukkan cara mendaftarkan middleware dengan IStartupFilter
. Middleware RequestSetOptionsMiddleware
menetapkan nilai opsi dari parameter string kueri:
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);
}
}
dikonfigurasi RequestSetOptionsMiddleware
di RequestSetOptionsStartupFilter
kelas :
namespace WebStartup.Middleware;
// <snippet1>
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
// </snippet1>
IStartupFilter
terdaftar di Program.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();
Saat parameter string kueri untuk option
disediakan, middleware memproses penetapan nilai sebelum middleware ASP.NET Core merender respons:
@page
@model PrivacyModel
@{
ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>
<p> Append query string ?option=hello</p>
Option String: @HttpContext.Items["option"];
Urutan eksekusi middleware ditetapkan oleh urutan IStartupFilter
pendaftaran:
Beberapa
IStartupFilter
implementasi dapat berinteraksi dengan objek yang sama. Jika pemesanan penting, pesan pendaftaran layanan merekaIStartupFilter
agar sesuai dengan urutan yang harus dijalankan middleware mereka.Pustaka dapat menambahkan middleware dengan satu atau beberapa
IStartupFilter
implementasi yang berjalan sebelum atau sesudah middleware aplikasi lain yang terdaftar denganIStartupFilter
. Untuk memanggilIStartupFilter
middleware sebelum middleware ditambahkan oleh pustakaIStartupFilter
:- Posisikan pendaftaran layanan sebelum pustaka ditambahkan ke kontainer layanan.
- Untuk memanggil setelahnya, posisikan pendaftaran layanan setelah pustaka ditambahkan.
Catatan: Anda tidak dapat memperluas aplikasi ASP.NET Core saat mengambil alih Configure
. Untuk informasi lebih lanjut, lihat masalah GitHub ini.
Menambahkan konfigurasi saat startup dari rakitan eksternal
Implementasi IHostingStartup memungkinkan penambahan penyempurnaan ke aplikasi saat startup dari rakitan eksternal di luar file aplikasi Program.cs
. Untuk informasi selengkapnya, lihat Menggunakan rakitan startup hosting di ASP.NET Core.
Kelas Startup
mengonfigurasi layanan dan alur permintaan aplikasi.
Kelas Startup
aplikasi ASP.NET Core menggunakan Startup
kelas, yang dinamai Startup
berdasarkan konvensi. Kelas Startup
:
- Secara opsional menyertakan ConfigureServices metode untuk mengonfigurasi layanan aplikasi. Layanan adalah komponen yang dapat digunakan kembali yang menyediakan fungsionalitas aplikasi. Layanan terdaftar dan digunakan di
ConfigureServices
seluruh aplikasi melalui injeksi dependensi (DI) atau ApplicationServices. - Configure Menyertakan metode untuk membuat alur pemrosesan permintaan aplikasi.
ConfigureServices
dan Configure
dipanggil oleh runtime ASP.NET Core saat aplikasi dimulai:
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();
});
}
}
Sampel sebelumnya adalah untuk Razor Pages; versi MVC serupa.
Kelas Startup
ditentukan saat host aplikasi dibuat. Kelas Startup
biasanya ditentukan dengan memanggil WebHostBuilderExtensions.UseStartup
/<TStartup>
metode pada pembangun host:
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>();
});
}
Host menyediakan layanan yang tersedia untuk Startup
konstruktor kelas. Aplikasi ini menambahkan layanan tambahan melalui ConfigureServices
. Layanan host dan aplikasi tersedia di dan di Configure
seluruh aplikasi.
Hanya jenis layanan berikut yang dapat disuntikkan ke Startup
konstruktor saat menggunakan Host Generik (IHostBuilder):
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
{
}
}
}
Sebagian besar layanan tidak tersedia sampai metode dipanggil Configure
.
Beberapa Startup
Saat aplikasi menentukan kelas terpisah Startup
untuk lingkungan yang berbeda (misalnya, StartupDevelopment
), kelas yang sesuai Startup
dipilih saat runtime. Kelas yang akhiran namanya cocok dengan lingkungan saat ini diprioritaskan. Jika aplikasi dijalankan di lingkungan Pengembangan dan menyertakan Startup
kelas dan StartupDevelopment
kelas, StartupDevelopment
kelas akan digunakan. Untuk informasi selengkapnya, lihat Menggunakan beberapa lingkungan.
Lihat Host untuk informasi selengkapnya tentang host. Untuk informasi tentang menangani kesalahan selama startup, lihat Penanganan pengecualian startup.
Metode ConfigureServices
Metodenya ConfigureServices adalah:
- Opsional.
- Dipanggil oleh host sebelum
Configure
metode untuk mengonfigurasi layanan aplikasi. - Di mana opsi konfigurasi diatur menurut konvensi.
Host dapat mengonfigurasi beberapa layanan sebelum Startup
metode dipanggil. Untuk informasi selengkapnya, lihat Host.
Untuk fitur yang memerlukan penyiapan substansial, ada Add{Service}
metode ekstensi pada IServiceCollection. Misalnya, TambahkanDbContext, TambahkanDefaultIdentity, TambahkanEntityFrameworkStores, dan TambahkanRazorPages:
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();
}
Menambahkan layanan ke kontainer layanan membuatnya tersedia dalam aplikasi dan dalam Configure
metode . Layanan diselesaikan melalui injeksi dependensi atau dari ApplicationServices.
Metode Konfigurasi
Metode Configure ini digunakan untuk menentukan bagaimana aplikasi merespons permintaan HTTP. Alur permintaan dikonfigurasi dengan menambahkan komponen middleware ke IApplicationBuilder instans. IApplicationBuilder
tersedia untuk Configure
metode , tetapi tidak terdaftar dalam kontainer layanan. Hosting membuat IApplicationBuilder
dan meneruskannya langsung ke Configure
.
Templat ASP.NET Core mengonfigurasi alur dengan dukungan untuk:
- Halaman Pengecualian Pengembang
- Handler pengecualian
- HTTP Strict Transport Security (HSTS)
- Pengalihan HTTPS
- File statis
- ASP.NET Core MVC dan 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();
});
}
}
Sampel sebelumnya adalah untuk Razor Pages; versi MVC serupa.
Setiap Use
metode ekstensi menambahkan satu atau beberapa komponen middleware ke alur permintaan. Misalnya, UseStaticFiles mengonfigurasi middleware untuk melayani file statis.
Setiap komponen middleware dalam alur permintaan bertanggung jawab untuk memanggil komponen berikutnya dalam alur atau sirkuit pendek rantai, jika sesuai.
Layanan tambahan, seperti IWebHostEnvironment
, ILoggerFactory
, atau apa pun yang ditentukan dalam ConfigureServices
, dapat ditentukan dalam Configure
tanda tangan metode. Layanan ini disuntikkan jika tersedia.
Untuk informasi selengkapnya tentang cara menggunakan IApplicationBuilder
dan urutan pemrosesan middleware, lihat ASP.NET Core Middleware.
Mengonfigurasi layanan tanpa Startup
Untuk mengonfigurasi layanan dan alur pemrosesan permintaan tanpa menggunakan Startup
kelas, panggil ConfigureServices
dan Configure
metode kenyamanan pada pembuat host. Beberapa panggilan untuk ConfigureServices
ditambahkan satu dengan yang lain. Jika ada beberapa Configure
panggilan metode, panggilan terakhir Configure
digunakan.
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"];
});
});
});
}
Perluas Startup dengan filter startup
Gunakan IStartupFilter:
- Untuk mengonfigurasi middleware di awal atau akhir alur Konfigurasi middleware aplikasi tanpa panggilan eksplisit ke
Use{Middleware}
.IStartupFilter
digunakan oleh ASP.NET Core untuk menambahkan default ke awal alur tanpa harus membuat penulis aplikasi secara eksplisit mendaftarkan middleware default.IStartupFilter
memungkinkan komponen yang berbeda untuk memanggilUse{Middleware}
atas nama penulis aplikasi. - Untuk membuat alur
Configure
metode. IStartupFilter.Configure dapat mengatur middleware untuk dijalankan sebelum atau sesudah middleware ditambahkan oleh pustaka.
IStartupFilter
Configuremengimplementasikan , yang menerima dan mengembalikan Action<IApplicationBuilder>
. Menentukan IApplicationBuilder kelas untuk mengonfigurasi alur permintaan aplikasi. Untuk informasi selengkapnya, lihat Membuat alur middleware dengan IApplicationBuilder.
Masing-masing IStartupFilter
dapat menambahkan satu atau beberapa middleware dalam alur permintaan. Filter dipanggil dalam urutan ditambahkan ke kontainer layanan. Filter dapat menambahkan middleware sebelum atau sesudah meneruskan kontrol ke filter berikutnya, sehingga ditambahkan ke awal atau akhir alur aplikasi.
Contoh berikut menunjukkan cara mendaftarkan middleware dengan IStartupFilter
. Middleware RequestSetOptionsMiddleware
menetapkan nilai opsi dari parameter string kueri:
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);
}
}
dikonfigurasi RequestSetOptionsMiddleware
di RequestSetOptionsStartupFilter
kelas :
public class RequestSetOptionsStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return builder =>
{
builder.UseMiddleware<RequestSetOptionsMiddleware>();
next(builder);
};
}
}
IStartupFilter
terdaftar dalam kontainer layanan di ConfigureServices.
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>();
});
}
Saat parameter string kueri untuk option
disediakan, middleware memproses penetapan nilai sebelum middleware ASP.NET Core merender respons.
Urutan eksekusi middleware ditetapkan oleh urutan IStartupFilter
pendaftaran:
Beberapa
IStartupFilter
implementasi dapat berinteraksi dengan objek yang sama. Jika pemesanan penting, pesan pendaftaran layanan merekaIStartupFilter
agar sesuai dengan urutan yang harus dijalankan middleware mereka.Pustaka dapat menambahkan middleware dengan satu atau beberapa
IStartupFilter
implementasi yang berjalan sebelum atau sesudah middleware aplikasi lain yang terdaftar denganIStartupFilter
. Untuk memanggilIStartupFilter
middleware sebelum middleware ditambahkan oleh pustakaIStartupFilter
:- Posisikan pendaftaran layanan sebelum pustaka ditambahkan ke kontainer layanan.
- Untuk memanggil setelahnya, posisikan pendaftaran layanan setelah pustaka ditambahkan.
Menambahkan konfigurasi saat startup dari rakitan eksternal
Implementasi IHostingStartup memungkinkan penambahan penyempurnaan ke aplikasi saat startup dari rakitan eksternal di luar kelas Startup
aplikasi. Untuk informasi selengkapnya, lihat Menggunakan rakitan startup hosting di ASP.NET Core.
Sumber Daya Tambahan:
ASP.NET Core