置百丈玄冰而崩裂,掷须臾池水而漂摇。

.NET 6 配置

ASP.NET Core 强强

启动配置

在.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

发表评论:

验证码