ExecutionContext в реализации функции Azure IWebJobsStartup - PullRequest
2 голосов
/ 10 апреля 2019

Как получить доступ к ExecutionContext.FunctionAppDirectory в классе запуска функций, чтобы я мог правильно настроить свою конфигурацию. Пожалуйста, смотрите следующий код запуска:

[assembly: WebJobsStartup(typeof(FuncStartup))]
namespace Function.Test
{
    public class FuncStartup : IWebJobsStartup
    {
        public void Configure(IWebJobsBuilder builder)
        {
            var config = new ConfigurationBuilder()
               .SetBasePath(“”/* How to get the Context here. I cann’t DI it 
                           as it requires default constructor*/)
               .AddJsonFile(“local.settings.json”, true, reloadOnChange: true)
               .AddEnvironmentVariables()
               .Build();

        }
    }
 }

1 Ответ

6 голосов
/ 10 апреля 2019

У вас нет ExecutionContext, поскольку ваша функция Azure еще не обрабатывает фактический вызов функции.Но он вам и не нужен - local.settings.json автоматически анализируется в переменных среды.

Если вам действительно нужен каталог, вы можете использовать %HOME%/site/wwwroot в Azure и AzureWebJobsScriptRoot, когдаработает локальноЭто эквивалент FunctionAppDirectory.

Этот также является хорошим обсуждением этой темы.

    public void Configure(IWebJobsBuilder builder)
    {
        var local_root = Environment.GetEnvironmentVariable("AzureWebJobsScriptRoot");
        var azure_root = $"{Environment.GetEnvironmentVariable("HOME")}/site/wwwroot";

        var actual_root = local_root ?? azure_root;

        var config = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
            .SetBasePath(actual_root)
            .AddJsonFile("SomeOther.json")
            .AddEnvironmentVariables()
            .Build();

        var appInsightsSetting = config.GetSection("APPINSIGHTS_INSTRUMENTATIONKEY");
        string val = appInsightsSetting.Value;
        var helloSetting = config.GetSection("hello");
        string val = helloSetting.Value;

        //...
    }

Пример local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "APPINSIGHTS_INSTRUMENTATIONKEY": "123456..."
  }
}

Пример SomeOther.JSON

{
  "hello":  "world"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...