ASP.NET Core MVC 2.1中CreateDefaultBuilder方法期望接收哪些参数?
关于ASP.NET Core MVC 2.1中CreateDefaultBuilder(string[] args)的参数说明
嘿,我来帮你搞清楚这个问题!你提到的CreateDefaultBuilder(string[] args)方法里的args参数,其实是程序启动时接收的命令行参数,不是随便传个普通字符串就行的,它主要用来让你通过命令行配置ASP.NET Core应用的运行参数。
为什么传"Hello""World"没用?
这些普通字符串不属于ASP.NET Core框架默认识别的命令行配置开关,框架不会对它们做任何特殊处理,所以你传了也不会起到预期的配置作用。
哪些是合理的参数?
这些参数通常是带有特定格式的配置项,框架会自动解析并应用到应用的配置中,举几个常见的例子:
- 指定运行环境:当你在命令行执行
dotnet run --environment Development时,args数组会是["--environment", "Development"],框架会用这个参数设置应用的运行环境(开发/生产/staging等) - 指定监听地址和端口:执行
dotnet run --urls=http://localhost:5001;https://localhost:5002,args就是["--urls=http://localhost:5001;https://localhost:5002"],用来覆盖默认的监听端口 - 自定义配置项:如果你的应用有自定义配置,比如
appsettings.json里有MyApp:ApiKey,你可以通过命令行传入dotnet run --MyApp:ApiKey=abc123,框架会把这个值加入配置系统,你可以在代码里通过IConfiguration读取
如何自定义处理这些参数?
如果你想自己处理非框架默认的参数,也可以在代码里手动解析args数组,或者利用ASP.NET Core的配置系统——因为CreateDefaultBuilder已经自动把命令行参数添加为配置源之一,你可以直接通过Configuration读取任意传入的参数值。
比如在Program.cs里:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>();
之后在Startup里注入IConfiguration,就可以读取args里的自定义参数了:
public class Startup { public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { // 读取自定义参数 string customArg = Configuration["MyCustomArg"]; } }
内容的提问来源于stack exchange,提问作者Andrey Bushman
相关产品推荐
相关产品推荐

