本文介绍了将命令行参数传递给ASP.NET核心中的Startup类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我通过命令行传入了参数
private static int Main(string[] args) { const string PORT = "12345" ; var listeningUrl = $"localhost:{PORT}"; var builder = new WebHostBuilder() .UseStartup<Startup>() .UseKestrel() .UseUrls(listeningUrl); var host = builder.Build(); WriteLine($"Running on {PORT}"); host.Run(); return 0; } 其中一个参数是日志记录输出目录。如何将此值放入Startup类中,以便在收到请求时可以写出此目录?我希望避免使用静态类。提供价值的服务是正确的方式吗?如果是,我如何将服务注入到我的中间件中?
推荐答案您应该能够使用AddCommandLine()扩展。首先安装Nuget包Microsoft.Extensions.Configuration.CommandLine并确保您拥有正确的导入:
using Microsoft.Extensions.Configuration;现在更新您的Main方法以包括新配置:
var config = new ConfigurationBuilder() .AddJsonFile("hosting.json", optional: true) //this is not needed, but could be useful .AddCommandLine(args) .Build(); var builder = new WebHostBuilder() .UseConfiguration(config) //<-- Add this .UseStartup<Startup>() .UseKestrel() .UseUrls(listeningUrl);现在将命令行选项视为配置:
dotnet run /MySetting:SomeValue=123并读入代码:
var someValue = Configuration.GetValue<int>("MySetting:SomeValue");更多推荐
将命令行参数传递给ASP.NET核心中的Startup类
发布评论