在ASP.NET Core项目中,Startup.cs
文件是一个非常重要的组成部分,它包含了配置应用程序所需的服务和请求处理管道的代码。这个文件通常位于项目的根目录下,或者在一个名为 Startup
的文件夹中(尽管后者不是默认的)。
Startup
类通常包含两个方法:ConfigureServices
和 Configure
,但你也可以根据需要添加其他方法或属性。不过,这两个方法是ASP.NET Core框架特别识别的,并在应用程序启动时调用。
Startup 类示例
下面是一个基本的 Startup.cs
文件示例:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// 此方法由运行时在应用程序启动时调用。
// 使用此方法向容器中添加服务。
public void ConfigureServices(IServiceCollection services)
{
// 添加框架服务。
services.AddControllersWithViews();
// 添加其他自定义服务...
}
// 此方法由运行时在应用程序启动后调用。
// 使用此方法配置HTTP请求管道。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// 在生产环境中,详细错误应关闭,并且只能通过日志进行访问。
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
解释
-
构造函数:
Startup
类有一个构造函数,它接受一个IConfiguration
参数。这个参数用于访问应用程序的配置文件(如appsettings.json
),并可以在整个Startup
类中使用。 -
ConfigureServices 方法:此方法用于配置应用程序的服务。你可以添加框架服务(如MVC、身份验证等)和自定义服务。这些服务稍后将在应用程序的其余部分中通过依赖注入使用。
-
Configure 方法:此方法用于配置应用程序的请求处理管道。你可以添加中间件,这些中间件会按照添加到
IApplicationBuilder
的顺序执行,以处理传入的HTTP请求。
注意事项
-
在ASP.NET Core 3.x及更高版本中,
Startup
类通常不包含对IHostingEnvironment
的引用,而是使用IWebHostEnvironment
。然而,如果你正在升级旧项目,可能会遇到仍然使用IHostingEnvironment
的代码。 -
你可以通过向
Startup
类的构造函数添加其他参数来访问其他服务,但请注意,这些服务必须是可由依赖注入容器解析的。 -
Startup
类是应用程序配置的核心,因此请确保你了解其中每个方法的用途,并根据需要调整它们以匹配你的应用程序需求。