作者:有你真好-LOVE | 来源:互联网 | 2023-02-07 13:35
当我使用VS Code在本地开发时,我将使用端口3000,因为我是一个时髦的人.非赶时髦的人希望它在服务器上的端口8080上.那很酷,我们得到了这个.Microsoft文档给出了以下示例:
public static void Main(string[] args)
{
var cOnfig= new ConfigurationBuilder()
.AddJsonFile("hosting.json", optional: true)
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel()
.Configure(app =>
{
app.Run(async (context) => await context.Response.WriteAsync("Hi!"));
})
.Build();
host.Run();
}
我不想用hosting.json
.我为什么要这样?我有这个appsettings.{environment}.json
文件正是这种情况.甜蜜,我只是把那个坏孩子粘在里面
public static void Main(string[] args)
{
var cOnfig= new ConfigurationBuilder()
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddCommandLine(args)
.Build();
什么编译器错误?env
在当前上下文中不存在.它只存在于Startup.cs
文件中 - 在启动时不会调用,而是从启动文件调用Program.cs
,带有魔法.
那么,我该如何解决这个问题呢?我怎么能存储在我的我的环境特定的站点设置环境特有的appsettings.json
,随后使用它,同时通过建立我的具体环境,虚拟主机WebHostBuilder
的Program.cs
?
1> Justin Sarac..:
这个有可能.扩展此处给出的答案,通过在Program.cs中创建WebHostBuilder和ConfigurationBuilder,可以访问主机环境,然后在特定于环境的appsettings文件中配置主机URL和端口.
假设appsettings.json和apppsettings.Development.json文件各有以下内容:
"hostUrl": "http://*:"
使用以下内容修改Main:
public static void Main(string[] args)
{
var host = new WebHostBuilder();
var env = host.GetSetting("environment");
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env}.json", optional: true)
.AddEnvironmentVariables();
var cOnfiguration= builder.Build();
host.UseKestrel()
.UseUrls(configuration["hostUrl"])
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup()
.Build()
.Run();
}
使用此代码,Startup.cs仍然需要声明自己的ConfigurationBuilder以公开其Configuration属性.