Не удается добавить объекты в settings.json для функции Azure

#azure #azure-functions

Вопрос:

У меня есть следующее для моего файла localsettings.json в функции Azure

 {
  "IsEncrypted": false,
  "Values": {
    "ConnectionString": "...",
    "AzureWebJobsStorage":
      "...",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "event-bus-connection": "..."
  }
}
 

Это прекрасно работает

Как бы то ни было, теперь мне нужно добавить сюда еще кое-что

  "JwtIssuerOptions": {
      "Issuer": "...",
      "Audience": "...",
      "SecretKey": "...",
      "ExpirationInMinutes": 3600
    },
 

Как только я добавлю это в значения, функция не запустится:

Отсутствует значение для хранилища azurewebjobs в файле local.settings.json.

Как я могу заставить это работать?

Пол

Комментарии:

1. Я считаю, что localseettings.json не поддерживает нотацию объектов для определения параметров. Что вы можете сделать, так это определить как ключ с : обозначением типа "JwtIssuerOptions:Issuer":...., "JwtIssuerOptions:Audience":...., , И теперь, используя JwtIssuerOptions строковый литерал, вы можете привязаться к конфигурации для привязки параметров.

2. Спасибо, что это работает, пожалуйста, не могли бы вы добавить это в качестве ответа?

3. Конечно, позвольте мне добавить это.

Ответ №1:

localseettings.json не поддерживает объектную нотацию для определения параметров. Что вы можете сделать, это определить как ключ с : обозначением типа «JwtIssuerOptions:Эмитент»:….,

 {
  "IsEncrypted": false,
  "Values": {
    "ConnectionString": "...",
    "AzureWebJobsStorage":"...",
    "JwtIssuerOptions:Issuer": "...",
    "JwtIssuerOptions:Audience": "...",
    "JwtIssuerOptions:SecretKey": "...",
    "JwtIssuerOptions:ExpirationInMinutes": 3600,
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "event-bus-connection": "..."
  }
}
 

И теперь, используя JwtIssuerOptions строковый литерал, вы можете привязаться к конфигурации для привязки параметров

 builder.Services.AddOptions<JwtAuthorizationOptions>()
    .Configure<IConfiguration>((settings, configuration) =>
    {
       configuration.GetSection("JwtIssuerOptions").Bind(settings);
    });