Skip to content
.NET 开发者指北.NET 开发者指北
CMS
.NET指北
FreeKit
Docker
关于
博客
github icon
    • .NET Core 学习示例文档
      • 创建简单Hello World
        • .NET Core 简单测试项目
          • FreeSql+ASP.NET Core
            • RESTful+FreeSql+AutoMapper
              • IdentityServer4
                • 七牛云对象存储
                  • ImCore 即时通讯
                    • Nacos 配置中心
                      • Serilog指北
                        • 在 ASP.NET Core 6 如何添加 Startup.cs
                          • 我们还能做什么?
                            • 源码
                            • 在 ASP.NET Core 6 中添加Startup.cs的整洁方式

                            在 ASP.NET Core 6 如何添加 Startup.cs

                            author iconTalking Dotnetcalendar icon2022年6月11日category icon
                            • ASP.NET Core
                            tag icon
                            • ASP.NET Core
                            • Startup
                            timer icon大约 2 分钟word icon约 737 字

                            此页内容
                            • 我们还能做什么?
                            • 源码
                            • 原文:https://www.talkingdotnet.com/how-to-add-startup-cs-in-asp-net-core-6-project/#more-8202open in new window
                            • 作者: Talking Dotnet

                            使用 ASP.NET Core 6.0项目,您将找不到Startup.cs文件。默认情况下,此文件将被删除,并且是将注册依赖项和中间件放到了Program.cs中。但是,如果您是 Startup.cs 的粉丝或将项目升级到 ASP.NET Core 6.0,你可能仍想要使用 Startup.cs 文件。因此,在这篇文章中,让我们将了解如何在 ASP.NET Core 6 项目中添加 Startup.cs

                            使用 ASP.NET Core 6.0项目时,您的Program.cs文件可能会这样。Program.cs是 ASP.NET Core Web 6应用模板的文件

                            var builder = WebApplication.CreateBuilder(args);
                            
                            // Add services to the container.
                            builder.Services.AddRazorPages();
                            
                            var app = builder.Build();
                            
                            // Configure the HTTP request pipeline.
                            if (!app.Environment.IsDevelopment())
                            {
                                app.UseExceptionHandler("/Error");
                                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                                app.UseHsts();
                            }
                            app.UseHttpsRedirection();
                            app.UseStaticFiles();
                            app.UseRouting();
                            app.UseAuthorization();
                            app.MapRazorPages();
                            app.Run();
                            
                            1
                            2
                            3
                            4
                            5
                            6
                            7
                            8
                            9
                            10
                            11
                            12
                            13
                            14
                            15
                            16
                            17
                            18
                            19
                            20

                            正如您在此处看到的,服务和中间件注册现在是此文件的一部分。而 Statup.cs 有 2 个方法 ConfigureServices() 和 Configure(),我们在方法 ConfigureServices 中注册依赖关系/服务,在 Configure 中注册中间件。

                            现在使用 Program.cs,您需要在第 4 行之后注册您的服务/依赖项builder.Services.AddRazorPages();,并在第 6 行之后注册中间件var app = builder.Build();。请记住,在管道中注册中间件时,顺序很重要。

                            若要将 Startup.cs 添加到 ASP.NET Core 6.0 项目中 ,请添加一个名为Startup.cs的新文件 并添加以下代码。

                            public class Startup
                            {
                                public Startup(IConfiguration configuration)
                                {
                                    Configuration = configuration;
                                }
                            
                                public IConfiguration Configuration { get; }
                            
                                public void ConfigureServices(IServiceCollection services)
                                {
                                    services.AddRazorPages();
                                }
                            
                                public void Configure(WebApplication app, IWebHostEnvironment env)
                                {
                                    if (!app.Environment.IsDevelopment())
                                    {
                                        app.UseExceptionHandler("/Error");
                                        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                                        app.UseHsts();
                                    }
                                    app.UseHttpsRedirection();
                                    app.UseStaticFiles();
                                    app.UseRouting();
                                    app.UseAuthorization();
                                    app.MapRazorPages();
                                    app.Run();
                                }
                            }
                            
                            1
                            2
                            3
                            4
                            5
                            6
                            7
                            8
                            9
                            10
                            11
                            12
                            13
                            14
                            15
                            16
                            17
                            18
                            19
                            20
                            21
                            22
                            23
                            24
                            25
                            26
                            27
                            28
                            29
                            30

                            构造函数和这两个方法中的代码是非常熟悉。从文件Program.cs中删除依赖项注册的代码并将其放入ConfigureService()方法中。同样,中间件注册码也从文件中删除并放入Configure() 方法中。

                            接下来,我们需要介绍 Program.cs 如何调用 Startup.cs 。因此,请将文件代码更新为以下内容。

                            var builder = WebApplication.CreateBuilder(args);
                            
                            var startup = new Startup(builder.Configuration);
                            startup.ConfigureServices(builder.Services);
                            
                            var app = builder.Build();
                            startup.Configure(app, builder.Environment);
                            
                            1
                            2
                            3
                            4
                            5
                            6
                            7

                            Startup.cs 类所需的所有对象都存在于 builder 对象中,因此我们可以将所需的对象传递给ConfigureService()和Configure()方法。就是这样。您的项目应该正常运行

                            # 我们还能做什么?

                            这是添加Startup.cs的自定义方式,因此实际上我们不必遵循任何与该类相关的内置规则。我从不喜欢ConfigureService()和Configure()这两个名称,因为它们并没有确切定义它们的用途。以前,无法重命名这些名称,但现在我可以给出一个有意义的名称。类似地,ConfigureService变成RegisterServices,Configure变成SetupMiddleware。

                            var startup = new Startup(builder.Configuration);
                            startup.RegisterServices(builder.Services);
                            
                            var app = builder.Build();
                            startup.SetupMiddlewares(app, builder.Environment);
                            
                            1
                            2
                            3
                            4
                            5

                            # 源码

                            • dotnetcore-examples/Program.cs at master · luoyunchong/dotnetcore-examples (github.com)open in new window
                            edit icon在 GitHub 上编辑此页open in new window
                            上次编辑于: 2022/6/13 15:26:37
                            贡献者: igeekfan
                            上一页
                            Serilog指北
                            下一页
                            在 ASP.NET Core 6 中添加Startup.cs的整洁方式
                            MIT Licensed | Copyright © 2021-present luoyunchong
                            苏ICP备16046457号-1

                            该应用可以安装在你的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和你的操作系统安全地进行交互。

                            详情