ASP.NET Core 应用程序的Startup笔记

在 ASP.NET Core 中,Startup 类是用于配置应用程序的服务和请求管道的地方。

默认情况下,Visual Studio 2022 创建的 ASP.NET Core Web API 项目可能不再包含 Startup 类,而是直接在 Program.cs 中进行配置。这是因为从 .NET 6 开始,ASP.NET Core 引入了简化的宿主模型(Minimal Hosting Model),使得应用的结构更加简单。

使用 Startup 类的情况

我们可以在以下情况下使用 Startup 类:

  1. 复杂的配置需求:如果我们的应用程序需要多个配置和中间件,使用 Startup 类可以帮助我们将配置分离,结构更加清晰。
  2. 迁移旧代码:如果我们在维护一个旧版的 ASP.NET Core 应用程序(如 .NET 5 或更早版本),这些版本通常都使用 Startup 类。

Startup 类的基本结构

如果我们决定使用 Startup 类,基本结构如下:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration; // 读取配置
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        // 注册服务,如数据库上下文、依赖注入等
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // 配置中间件
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error"); // 错误处理
            app.UseHsts(); // 安全传输
        }

        app.UseRouting(); // 启用路由
        app.UseAuthorization(); // 启用授权

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers(); // 映射控制器
        });
    }
}


在 Program.cs 中使用 Startup

如果我们的项目使用了 Startup 类,我们需要在 Program.cs 中进行引用和配置:
 

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>(); // 使用 Startup 类
            });
}



注意事项

  1. 项目结构:在使用 Startup 类时,确保 ConfigureServices 和 Configure 方法的逻辑清晰,以便于维护和扩展。
  2. 依赖注入:在 ConfigureServices 中注册所有需要的服务,以便在控制器和其他服务中使用。
  3. 中间件顺序:在 Configure 方法中配置中间件时,注意它们的顺序,因为中间件的执行顺序是从上到下的,这会影响请求处理的逻辑。

总结

使用 Startup 类可以帮助我们组织和管理 ASP.NET Core 应用程序的配置和中间件。

如果我们觉得项目结构复杂或者需要更清晰的分层,可以选择使用它。

在较新版本的 ASP.NET Core 中,我们也可以选择继续使用简化的结构,根据项目的复杂性和个人偏好来决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值