And*_*yNZ 5 .net c# asp.net-core
我想通过命令行参数将 DbConnectionString 传递给我的 .NET Core Web API 应用程序。
看完后:
.NET core 将命令行参数从 Program.cs 传递到 Startup.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();
}
Run Code Online (Sandbox Code Playgroud)
所以现在......我已将命令行参数添加到我的 WebHostBuider 的键值对配置集合中......
但是,在 Startup.cs 中,我注册了所有内容,例如 DbContext(需要将 DbConnectionString 作为命令行参数传递)
我的启动构造函数如下所示:
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();
}
Run Code Online (Sandbox Code Playgroud)
因为以前,我的连接字符串存储在配置文件中。
我的问题是 - 如何从 Startup.cs 中访问命令行参数?我已经尝试在 Startup.cs 中使用 IConfiguration 和 IConfigurationRoot 进行构造函数注入,但这些都没有注册。
我失踪了
.ConfigureServices(s => s.AddSingleton<IConfigurationRoot>(config))
Run Code Online (Sandbox Code Playgroud)
在我的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();
}`
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1765 次 |
最近记录: |