启动配置
在.net core 3.1中,有Startup启动类,其中的顺序如下:
ConfigureWebHostDefaults ConfigureHostConfiguration ConfigureAppConfiguration Startup.ConfigureService ConfigureServices ConfigureLogging Startup.Configure
在.NET 6中,用WebApplication代表运行的应用,
var builder=WebApplication.CreateBuilder(args);
静态类的方式创建一个 WebApplicationBuilder 的对象,该对象可以对运行的应用进行配置:
eg:
添加配置文件
builder.Configuration.AddJsonFile("mysettings.json");添加日志配置
builder.Logging.AddJsonConsole();
配置IHostBuilder
builder.Host.UseSerilog(dispose: true);
改变webroot
默认情况下是在相对路径wwwroot下:
builder.WebHost.UseWebRoot("webroot");配置DI容器
eg:Autofac
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>((hostContext, autofacBuilder) =>
{
    autofacBuilder.RegisterModule(new MyAutofacModuleRegister());
});using Autofac;public class MyAutofacModuleRegister : Autofac.Module{    protected override void Load(ContainerBuilder builder)
    {        base.Load(builder);
    }
}WebApplicationBuilder中Build()函数可以创建WebApplication对象,该对象就是运行应用的目标程序对象,在这个对象下添加中间件,终结点,运行等相关.
var app = builder.Build();
app.UseDeveloperExceptionPage();
app.UseStaticFiles();
app.MapGet("/",()=>"Hello");
app.Run();.NET 6中没有Startup类,可以手动创建添加一个,例如:
创建 Startup类,添加构造函数,注册服务的方法,添加中间件的方法
public class Startup
    {        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }        public IConfiguration Configuration { get; }        public void RegisterService(IServiceCollection services)
        {  
            services.AddHttpClient();
        }        public void SetupMiddleware(IApplicationBuilder app)
        {
            app.UseStaticFiles();
        }
    }然后在 program.cs中使用:
var builder=WebApplication.CreateBuilder(args);var startup=new Startup(builder.Configuration); startup.RegisterService(builder.Services);var app = builder.Build(); startup.SetupMiddleware(app); app.Run();
最后,常用程序启动端口的设置方法:
appsettings.json
"Kestrel": {
    "Endpoints": {
      "http": {
        "Url": "http://*:5400"
      }
    }
  }命令行参数的形式
dotnet AspNetCoreUrl.dll --urls "http://localhost:5403;https://localhost:5404"
中间件Urls添加,也会被配置文件override
app.Urls.Add("http://localhost:5402");appsettings.json配置urls
"urls": "http://*:5407"
UseUrls设置,如果配置文件中有Endpoints,会被override
builder.WebHost.UseUrls("http://localhost:5401");还有一种就是在launchSettings.json配置,但是只针对当前机器有效,不常用
系统参数顺序:
Kestrel > 命令行参数> app.Urls.Add > 配置文件urls > builder.WebHost.UseUrls > launchSettings
本文引用:https://www.cnblogs.com/demkin/p/16806602.html