【问题标题】:How to copy all the appsetting to Azure App service(windows) when deploying from visual studio从 Visual Studio 部署时如何将所有应用设置复制到 Azure App 服务(Windows)
【发布时间】:2021-11-29 17:33:38
【问题描述】:

我的应用设置中有复杂的层级设置。 当我从 Visual Studio 部署(使用发布)我的应用程序时,我想知道它是否确实将 appsetting 复制到 Azure,因为我收到与其中一项设置相关的错误,该设置在 azure 上不可用但存在于 appsetting 中。

我是否必须在 Azure 应用服务中再次手动创建所有设置。 另外,由于 Azure App 服务是键值对,我如何适应分层设置?

{
  "ConnectionStrings": {
    "DatabaseConsString": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

  },
  "ApplicationInsights": {
    /*XXXXXXXXXXXXXXX*/
    "InstrumentationKey": "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
  },
  "RedisCache": {
    "ConnectionString": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  },
  "sendGrid": {
    "ApiKey": "SG.XXXXXXXXXXXXXXXXXX",
    "FromEmail": "XXXXXXXX@XXXXXXXXXX.net",
    "FromEmailName": "XXXXXXXXXXXXXXXX"
  },
  "Twilio": {
    "AccountSID": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "AuthToken": "XXXXXXXXXXXXXXXXXXXXXXXXX",
    "FromNumber": "+XXXXXXXX"
  },
  "Jwt": {
    "key": "MyApplicationKey",
    "Issuer": "MyAppName",
    "Audience": "MyAppAudience"
  },
  "Serilog": {
    "Properties": {
      "ApplicationName": "XXXXXXXXXXXXXXXXXXXXXX",
      "Serilog": "AppInsightFromSerilog"   
    },
    "MinimumLevel": { //https://docs.datalust.co/v2/docs/logging-levels  (Verbose,Debug,Information,Warning,Error,Fatal)
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "Using": [ "XXXXXXXXXXXX.Server", "Serilog.Sinks.ApplicationInsights", "Serilog.Sinks.Console" ],
    "Enrich": [
      "FromLogContext",
      "WithUserName",
      "WithIPAddress"
    ],

    "Filter": [
      {
        "Name": "ByExcluding",
        "Args": {
          "expression": "RequestPath like '%swagger%'  or RequestPath like '%_framework%' or Contains(@m, 'Hosting environment:')  or Contains(@m, 'Now listening on:') or Contains(@m, 'HTTP') or Contains(@m, 'Application started. Press Ctrl+C to shut down.') or Contains(@m, 'Content root path:')"
          //https://github.com/serilog/serilog-expressions
        }
      }
    ],
    "WriteTo": [
      {
        "Name": "Console"
        //"Args": {
        //  "levelSwitch": "$consoleSwitch"
        //}
      },
      //{
      //  "Name": "File",
      //  "Args": {
      //    "path": "./logs/log-.txt",
      //    "rollingInterval": "Day"
      //  }
      //},
      {
        "Name": "ApplicationInsights",
        "Args": {
          "restrictedToMinimumLevel": "Information",
          "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
        }
      },
      {
        "Name": "MSSqlServer",
        "Args": {
         
          "connectionString": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
          "sinkOptionsSection": {
            "tableName": "SeriLog",
            "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
            "schemaName": "dbo",
            "autoCreateSqlTable": true
          },
          "columnOptionsSection": {
            //https://github.com/serilog/serilog-sinks-mssqlserver#custom-property-columns
            "additionalColumns": [
              {
                "ColumnName": "InstanceId",
                "PropertyName": "InstanceId",
                "DataType": "varchar",
                "DataLength": 80
              },
              {
                "ColumnName": "ConnectionId",
                "PropertyName": "ConnectionId",
                "DataType": "varchar",
                "DataLength": 80
              },
              {
                "ColumnName": "RequestId",
                "PropertyName": "RequestId",
                "DataType": "varchar",
                "DataLength": 80
              },
              {
                "ColumnName": "ActionId",
                "PropertyName": "ActionId",
                "DataType": "varchar",
                "DataLength": 80
              },
              {
                "ColumnName": "OperationId",
                "PropertyName": "OperationId",
                "DataType": "varchar",
                "DataLength": 80
              },
              {
                "ColumnName": "ActionName",
                "PropertyName": "ActionName",
                "DataType": "varchar",
                "DataLength": 5000
              },
              {
                "ColumnName": "EnvironmentName",
                "PropertyName": "EnvironmentName",
                "DataType": "varchar",
                "DataLength": 50
              },
              {
                "ColumnName": "ApplicationName",
                "PropertyName": "ApplicationName",
                "DataType": "varchar",
                "DataLength": 5000
              },
              {
                "ColumnName": "UserName",
                "PropertyName": "UserName",
                "DataType": "varchar",
                "DataLength": 1000
              },
              {
                "ColumnName": "IPAddress",
                "PropertyName": "IPAddress",
                "DataType": "varchar",
                "DataLength": 50
              },
              {
                "ColumnName": "Source",
                "PropertyName": "Source",
                "DataType": "varchar",
                "DataLength": 50
              },
              {
                "ColumnName": "SourceContext",
                "PropertyName": "SourceContext",
                "DataType": "varchar",
                "DataLength": 1000
              },
              {
                "ColumnName": "Origin",
                "PropertyName": "Origin",
                "DataType": "varchar",
                "DataLength": 100
              },
              {
                "ColumnName": "OperationType",
                "PropertyName": "OperationType",
                "DataType": "varchar",
                "DataLength": 1000
              },
              {
                "ColumnName": "RequestPath",
                "PropertyName": "RequestPath",
                "DataType": "varchar",
                "DataLength": 1000
              },
              {
                "ColumnName": "MethodName",
                "PropertyName": "MethodName",
                "DataType": "varchar",
                "DataLength": 1000
              }
            ],
            "addStandardColumns": [ "LogEvent" ],
            "removeStandardColumns": [ "MessageTemplate", "Properties" ],
            "logEvent": {
              "excludeAdditionalProperties": true,
              "excludeStandardColumns": true
            }
          },
          "restrictedToMinimumLevel": "Information" // (Verbose,Debug,Information,Warning,Error,Fatal)
        }

      }
    ]
  },
  "AllowedHosts": "*"

}

【问题讨论】:

    标签: azure-web-app-service azure-appservice azure-app-service-envrmnt


    【解决方案1】:

    无法在应用服务application settings/connection settings 中直接添加您的appsettings.json 文件值。

    相反,您可以在将其部署到 azure 后使用以下方法来实现此目的。参考here

    将 Web 应用部署到 Azure 应用服务时,通常不会部署 appsettings.json。因此,您必须使用 Azure Portal Application Settings 刀片来上传您的设置。在 Azure 应用服务中,您可以使用应用程序设置或连接字符串。如果保存在连接字符串中,则必须使用 GetConnectionString() API。

    在 azure Application Settings 刀片中单击 高级编辑 按钮。完成后,点击更新。不要忘记在配置页面中点击保存

    确保您的 json 文件格式应为以下格式

    [
        {
            "name": "<key-1>",
            "value": "<value-1>",
            "slotSetting": false
        },
        {
            "name": "<key-2>",
            "value": "<value-2>",
            "slotSetting": false
        },
        ...
    ]
    

    通过使用 CLI,我们可以将多个应用程序设置添加到您的网络应用程序服务中

    用于添加单个应用设置值

    az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings <setting-name>="<value>"
    

    用于使用 .json 文件添加 appsettings 值

    az  webapp  config  appsettings  set  --resource-group <resource-group-name>  --name <app-name>  --settings  mySetting=value  "@moresettings.json"
    

    参考here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      • 2020-09-21
      相关资源
      最近更新 更多