ASP.NET Core 2中的Startup.cs与Program.cs

时间:2019-02-21 09:55:08

标签: asp.net-core

我仔细阅读了Microsoft网站上的文档,在两个地方可以设置配置。

我们可以在Startup.cs或Program.cs中进行操作。但是,Program.cs具有与Startup.cs中可用的相同方法。

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .ConfigureServices(services =>
            {
                //same as ConfigureServices method in Startup.cs
                services.AddAutofac();
            })
            .Configure(app =>
            {
                //same as Configure method in Startup.cs
                app.UseMvc();
            })
            .Build();
}

是否存在Startup.cs类的唯一原因是从Program.cs中移走了一些配置?我们是否可以完全删除此类并将整个配置保留在Program.cs中?

致谢

2 个答案:

答案 0 :(得分:3)

  

我们可以完全删除此类,并将整个配置保留在Program.cs中吗?

文档说明

  

Convenience methods

     

要在不使用Startup类的情况下配置服务和请求处理管道,请在主机构建器上调用ConfigureServicesConfigure 便捷方法。对ConfigureServices的多次调用会相互追加。如果存在多个Configure方法调用,则使用最后一个Configure调用。

与实际的 Program.cs 相比,它更多地是关于构建器的配置。那只是用于保存应用程序主条目的默认模板类。

引用App startup in ASP.NET Core

答案 1 :(得分:0)

Program.cs是应用程序的启动位置。

Startup.cs是进行大量配置的地方。

这种分离的想法是基于SOLID原则的第一个原则-SRP(单一责任原则)。 SOLID principles使软件设计更加易于理解,灵活和可维护。

Single Responsibility Principle (SRP)指出,类或方法只能做一件事(或只能做一份工作)。如果您查看Startup.cs,它正是这样做的,这使阅读和理解代码变得很容易。