首页 > 解决方案 > 如何使用来自 secrets.json Azure 应用服务配置的嵌套值

问题描述

在我的应用程序的 secrets.json 文件中,我有以下部分。

"Serilog": {
    "WriteTo": [
      {
        "Name": "AzureTableStorage", 
        "Args": {
          "storageTableName": "Logging", 
          "connectionString": "DefaultEndpointsProtocol=xxxxxxxxxxx"
        }
      }
    ]
  }

我正在尝试部署到 Azure,并将密钥添加到我的应用服务配置中,如下所示。

  Serilog__WriteTo__Name
  Serilog__WriteTo__Args__storageTableName
  Serilog__WriteTo__Args__connectionString

但是,如果我使用两个较长密钥中的任何一个,应用程序将无法启动(仅显示错误:“如果您是应用程序管理员,则可以访问诊断资源。”)。我有另一个名为的设置CosmosConnectionSettings__ContainerName,它工作正常,所以这似乎是嵌套问题,而不是它们的关键长度。

应用服务配置为使用 Linux。

有没有更好的方法来解决这个问题,这个限制是否记录在任何地方?

标签: azureasp.net-coreazure-web-app-serviceazure-appserviceazure-configuration

解决方案


我认为这不是嵌套的错。

我已经对其进行了测试,这是我的secrets.json文件:

{
  "Serilog": {
    "WriteTo": {
      "Name": "AzureTableStorage",
      "Args": {
        "storageBlobName": "1.jpg",
        "connectionString": "DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;"
      }
    }
   
  }
}

我将值写入端点页面,如下所示: 这是我在门户网站上的配置中的 Appsettings:在此处输入图像描述 在此处输入图像描述

我设置的 Appsettings 在 azure web app 上运行良好。 在此处输入图像描述

我的建议是:

  1. 检查您如何使用密钥AzureTableStorageconnectionString脚本。
  2. 在 IIS 上测试您的项目。实际上,如果它在 IIS 上运行良好,它应该在 Azure 上运行良好。

推荐阅读