Глобальное получение ExecutionContext в приложении-функции Azure - PullRequest
0 голосов
/ 07 октября 2018

У меня есть функция Apps, и в классе помощника, который собирается подготовить файл и сохранить его для меня, я хочу прочитать файл проекта

Я пробовал много способов, таких как (AppDomain, AppContext,.... и т. д.) и многие другие, и, поскольку он не содержит сервера, файл program.cs находится в другом каталоге, чем функция, в которой он выполняется.я хочу каталог WebRoot.

Я нашел это https://github.com/Azure/azure-functions-host/wiki/Retrieving-information-about-the-currently-running-function, и это дает мне правильный путь, который я хочу, wwwroot с помощью FunctionAppDirectory.

проблема в том, что мне нужно передать ExecutionContext в функцию run, а затем мне нужно передать его в класс Helper, я не могу прочитать его непосредственно из вспомогательных классов.и у меня есть это в нескольких местах.

Как я могу получить это глобально через приложение / классы.

спасибо.

1 Ответ

0 голосов
/ 07 октября 2018

Один из способов решения вашей проблемы:

  1. Определить глобальный интерфейс:

    public interface IExecutionContext
    {
        Guid InvocationId { get; set; }
        string FunctionName { get; set; }
        string FunctionDirectory { get; set; }
        string FunctionAppDirectory { get; set; }
    }
    
  2. Добавить реализацию для функции приложения:

    public class FunctionAppExecutionContext : ExecutionContext, IExecutionContext
    {
    }
    
  3. Добавить конфигурацию DI для приложения функции (необязательно):

    services.AddSingleton<IExecutionContext, FunctionAppExecutionContext>();

Затем в вашемвспомогательные классы, используйте интерфейс, чтобы скрыть реализацию.Который, в этом случае, является Функциональным SDKs ExecutionContext.Повторите шаги реализации класса для реализации классов для других библиотек.

...