我想通过命令行参数将DbConnectionString传递给我的.NET Core Web API应用程序.
看完之后:
.NET core Pass Commandline Args to Startup.cs from Program.cs
我的Program.cs看起来像:
public static void Main(string[] args) { var config = new ConfigurationBuilder() .AddCommandLine(args) .Build(); var host = new WebHostBuilder() .UseKestrel() .UseConfiguration(config) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); }
所以现在……我已经将命令行args添加到我的WebHostBuider的键值对配置集合中……
但是,在Startup.cs中我注册了所有内容,例如我的DbContext(需要将DbConnectionString作为命令行arg传递)
我的Startup构造函数如下所示:
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json",optional: false,reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json",optional: true) .AddEnvironmentvariables(); Configuration = builder.Build(); }
我的问题是 – 如何从Startup.cs中访问命令行参数?
我已尝试在Startup.cs中使用IConfiguration和IConfigurationRoot进行构造函数注入,但这些都没有注册.
解决方法
我失踪了
.ConfigureServices(s => s.AddSingleton<IConfigurationRoot>(config))
在我的program.cs中.修正版如下:
public static void Main(string[] args) { var config = new ConfigurationBuilder() .AddCommandLine(args) .Build(); var host = new WebHostBuilder() .UseKestrel() .UseConfiguration(config) .ConfigureServices(s => s.AddSingleton<IConfigurationRoot>(config)) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); }`
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。