当前位置: 首页 > article >正文

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 中,我们也可以选择继续使用简化的结构,根据项目的复杂性和个人偏好来决定。


http://www.kler.cn/a/371121.html

相关文章:

  • 【机器学习:十四、TensorFlow与PyTorch的对比分析】
  • ElasticSearch|ES|架构介绍|原理浅析
  • 【汇编】汇编编程中的指令传参方式
  • Flutter插件制作、本地/远程依赖及缓存机制深入剖析(原创-附源码)
  • 深入浅出 OpenResty
  • LabVIEW智能水肥一体灌溉控制系统
  • upload-labs靶场Pass-21
  • 网络中的一些基本概念
  • GPT-Sovits-1-数据处理
  • Word设置只读后,为什么还能编辑?
  • 【Mac】Python 环境管理工具
  • Java的ArrayList集合
  • windows 驱动实例分析系列: NDIS 6.0的Filter 驱动改造(三)
  • ARCGIS PRO SDK 实现图层标注
  • 深入理解Java虚拟机(六)
  • 知识吾爱纯净版小程序系统 leibiao SQL注入漏洞复现(XVE-2024-30663)
  • 实验九 视图的使用
  • Hexo提交部署命令与Git Bash Here控制终端中按下Ctrl+C无法中断hexo s的解决办法
  • 开源一个开发的聊天应用与AI开发框架,集成 ChatGPT,支持私有部署的源码
  • SpringMVC学习(3)
  • Android的SQLiteOpenHelper类 笔记241027
  • 开发了一个成人学位英语助考微信小程序
  • Spark SQL DSL
  • QNAP威联通NAS怎么通过HBS3设置定时备份计划至外部存储
  • Python日志系统详解:Logging模块最佳实践
  • 如何选择适合自己的 Python IDE