Azure Функция публикации - PullRequest
       122

Azure Функция публикации

0 голосов
/ 29 января 2020

Я пытаюсь опубликовать sh Azure Функция v.2, но получаю ошибку:

Невозможно запустить функцию времени выполнения функции. Microsoft.Extensions.Configuration.FileExtensions: Файл конфигурации 'local.settings. json' не найден и не является обязательным. Физический путь: «D: \ Program Files (x86) \ SiteExtensions \ Functions \ 2.0.12961 \ 32bit \ local.settings. json».

У меня есть следующая конфигурация:

<None Update="local.settings.json">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  <CopyToPublishDirectory>Always</CopyToPublishDirectory>
</None>

и я вижу этот файл в Куду.

Как его решить?

ДОБАВЛЕНО:

Я пытался создать другой файл с именем config.json:

{
  "FtpSettings": {
    "FtpServer": "ftp://address/out",
    "FtpLogin": "login",
    "FtpPassword": "pass"
  }
}

, затем попробуйте прочитать его:

        var config = new ConfigurationBuilder()
            .AddJsonFile("config.json", optional: true, reloadOnChange: true)
            .AddEnvironmentVariables()
            .Build();

        builder.Services.AddTransient<FtpService.IFtpService>(s => new FtpService.Core.FtpService(
            address: config.GetSection("FtpSettings:FtpServer").Value,
            username: config.GetSection("FtpSettings:FtpLogin").Value,
            password: config.GetSection("FtpSettings:FtpPassword").Value
            ));

, поэтому мой Startup класс:

[assembly: FunctionsStartup(typeof(FunctionAppEfsGetFilesFromFtp.Startup))]
namespace FunctionAppEfsGetFilesFromFtp
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var config = new ConfigurationBuilder()
                .AddJsonFile("config.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build();

            builder.Services.AddTransient<FtpService.IFtpService>(s => new FtpService.Core.FtpService(
                address: config.GetSection("FtpSettings:FtpServer").Value,
                username: config.GetSection("FtpSettings:FtpLogin").Value,
                password: config.GetSection("FtpSettings:FtpPassword").Value
                ));
        }
    }
}

но это тоже нельзя прочитать

1 Ответ

0 голосов
/ 01 февраля 2020

В соответствии с документами :

По умолчанию эти настройки не переносятся автоматически при публикации проекта в Azure.

* 1008. * Таким образом, local.settings. json не включен в процесс развертывания. Предлагаемый способ - использовать переменные среды. Обходной путь - назвать файл как-нибудь еще, прочитать файл из path и проанализировать его как json объект.
...