在部署ASP.NET Core 6应用程序时,可以使用GitHub Secrets来存储敏感的配置信息,例如连接字符串、API密钥等。然而,当使用GitHub Secrets的appsettings.json功能时,可能会遇到问题。以下是一个解决该问题的方法示例:
首先,确保在GitHub仓库的Settings页面的Secrets选项卡中设置了相应的密钥。例如,可以设置一个名为"AppSettings"的密钥,并将其值设置为appsettings.json文件中的JSON对象。
在应用程序的Startup.cs文件中,添加一个新的ConfigureAppConfiguration方法,用于从GitHub Secrets中获取appsettings.json的内容。示例如下:
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
// 注册其他服务
// ...
// 从GitHub Secrets获取appsettings.json内容
var appSettingsJson = Configuration["AppSettings"];
var appSettings = JsonConvert.DeserializeObject>(appSettingsJson);
// 将appSettings添加到Configuration中
Configuration = new ConfigurationBuilder()
.AddConfiguration(Configuration)
.AddInMemoryCollection(appSettings)
.Build();
services.AddSingleton(Configuration);
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 配置中间件和管道
// ...
}
}
public class MyController : ControllerBase
{
private readonly IConfiguration _configuration;
public MyController(IConfiguration configuration)
{
_configuration = configuration;
}
public IActionResult Get()
{
var connectionString = _configuration.GetConnectionString("DefaultConnection");
// 使用连接字符串执行操作
// ...
return Ok();
}
}
通过以上步骤,你可以在部署ASP.NET Core 6应用程序时,使用GitHub Secrets的appsettings.json功能正常工作。请确保在GitHub仓库的Settings页面的Secrets选项卡中设置了正确的密钥,并在应用程序中使用适当的配置访问方法来获取GitHub Secrets中的值。