Core WebJob 不会覆盖来自 WebApp 的连接字符串

问题描述 投票:0回答:1

我正在将我的 .Net Framework webjobs 移植到 Core v6 并重新创建它们作为控制台应用程序。我无法获取 Azure 中父 Web 应用程序上的连接字符串来覆盖 Web 作业上的连接字符串。

然后我在 webjob 中有 appsettings.json,它被设置为 Copy If Newer:

{
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=localhost;Initial Catalog=x;Persist Security Info=True;Integrated Security=True;TrustServerCertificate=True"
  }
}

然后我读出了 Program.cs 中的连接字符串,但它显示的是本地连接字符串,而不是来自 web 应用程序的连接字符串:

using Microsoft.Extensions.Configuration;

var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: false);
var configuration = builder.Build();
var connectionString = configuration.GetSection("ConnectionStrings")["DefaultConnection"];

throw new Exception(connectionString);

这是来自 Azure 上的 webjob 的日志记录:

[03/08/2024 19:04:00 > 65f818: SYS INFO] Status changed to Initializing
[03/08/2024 19:04:00 > 65f818: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost'
[03/08/2024 19:04:00 > 65f818: SYS INFO] Status changed to Running
[03/08/2024 19:04:00 > 65f818: INFO] 
[03/08/2024 19:04:00 > 65f818: INFO] C:\local\Temp\jobs\triggered\Test\qahcfbvl.0q4>dotnet xxx.dll  
[03/08/2024 19:04:00 > 65f818: ERR ] Unhandled exception. System.Exception: Data Source=localhost;Initial Catalog=x;Persist Security Info=True;Integrated Security=True;TrustServerCertificate=True
[03/08/2024 19:04:00 > 65f818: ERR ]    at Program.<Main>$(String[] args) in C:\Dev\xxx\Program.cs:line 16
[03/08/2024 19:04:00 > 65f818: SYS INFO] Status changed to Failed
[03/08/2024 19:04:00 > 65f818: SYS ERR ] Job failed due to exit code -532462766
azure azure-webjobs
1个回答
0
投票
  • 在代码中添加

    .AddEnvironmentVariables()
    即可访问 Azure 应用服务中添加的环境变量。

  • 安装 NuGet 包

    Microsoft.Extensions.Configuration.EnvironmentVariables

  • 我也可以使用

    configuration.GetConnectionString("DefaultConnection")
    检索连接字符串。

我的

Program.cs
文件:

using Microsoft.Extensions.Configuration;
Console.WriteLine("Hello, World!");

var builder = new ConfigurationBuilder()
             .AddJsonFile("appsettings.json", optional: false)
             .AddEnvironmentVariables();            

var configuration = builder.Build();
var connectionString = configuration.GetSection("ConnectionStrings")["DefaultConnection"];
//var azureconn = configuration.GetConnectionString("DefaultConnection");
throw new Exception(connectionString);

本地输出: enter image description here

环境变量: enter image description here

网络作业输出: enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.