启动配置
在.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