gpt4 book ai didi

iis - 在 IIS 中覆盖 appsettings.json

转载 作者:行者123 更新时间:2023-12-04 15:39:32 34 4
gpt4 key购买 nike

我有一个 .net 核心 Web 项目,我正在将其发布到 Windows(10 或服务器)上的 IIS。我似乎无法让 IIS 通过配置编辑器提供连接字符串。我想要这里的连接字符串,这样它就不会在每次部署后被覆盖。

我尝试过使用 ASPNETCORE_ConnectionStrings__DefaultConnectionConnectionStrings:DefaultConnection 但我总是收到 500 错误,指出连接字符串不能为 null。

我在这里错过了什么?

这是我的 Startup.cs 文件的一部分:请注意,此应用程序是在默认配置为您执行此操作之前的时间。

 public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddUserSecrets<Startup>()
.AddEnvironmentVariables();
Configuration = builder.Build();
}
}

编辑:

我已经设置了一个全新的 .Net Core 2.2 应用程序。即使使用较新的程序/启动。连接字符串未通过。

public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args) //<-- adds config.AddEnvironmentVariables();
.UseStartup<Startup>();
}

enter image description here

最佳答案

我认为您需要从环境变量中删除 ASPNETCORE_ 前缀(只是您的连接字符串而不是 ASPNETCORE_ENVIRONMENT)。

我在这里查看环境变量配置提供程序的 Microsoft 源代码:https://github.com/aspnet/Configuration/blob/d469707ab18eef7ed0002f00175a9ad5b0f36250/src/Config.EnvironmentVariables/EnvironmentVariablesConfigurationProvider.cs

如果你想要它确实需要一个“前缀”,但是当我查看“CreateDefaultBuilder”的源代码时:https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs#L177

它只是用一个空的前缀参数调用它,这意味着你根本不应该使用任何前缀:

config.AddEnvironmentVariables();

您当然可以使用您选择的前缀手动添加对 AddEnvironmentVariables 的调用,然后您也可以将其添加到您的环境变量中

关于iis - 在 IIS 中覆盖 appsettings.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58364917/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com