2017-10-03 2 views
2

Azure 기능이 시작될 때 일부 코드 (연결 문자열, DI 및 기타 구성 설정 위치)를 한 번 실행하는 방법을 찾으려고합니다. 그래서 지금, 그것은 생성 된 function.json이와 함께 엔트리 포인트로 실행 메소드를 호출합니다 :Azure 기능 시작시 코드 실행

"entryPoint": "MyFunctionApp.MessageReceiver.Run" 

이 실행 방법은 EventHubTrigger 사용 및과 같이 들어오는 메시지를 처리 ​​:

[FunctionName("MessageReceiver")] 
     public static void Run([EventHubTrigger("eventHubName", Connection = "eventHubConnection")]string message, TraceWriter log) 
     { 
      if (string.IsNullOrWhiteSpace(message)) 
      { 
       log.Info($"C# Event Hub trigger function processed a message: {message}"); 
      } 
     } 

인가가 이 Run 메서드를 호출하기 전에 초기 시작시 일부 코드를 실행할 수있는 방법은 무엇입니까? 또는이 클래스 전에 호출 할 수있는 진입 점을 선언 한 다음 Run()을 호출하고 어떻게 든 트리거를 전달할 수있는 방법이 있습니까? 응용 프로그램이 시작되었는지 확인하기 위해 부울 속성을 설정하는 것과 같은 해킹을 피하는 방법을 찾으려고합니다.

+1

가능한 중복 [것이 가능 푸른 함수의 허브를 시작하는 코드를 실행할 수 있나요?] (https://stackoverflow.com/questions/45494953/is-it-possible-to-run-code- when-a-azure-functions-hub-is-starting) – Mikhail

답변

3

IExtensionConfigProvider를 구현할 수 있습니다. 그것들은 "시작"에서 스캔되어 실행됩니다.

using Microsoft.Azure.WebJobs.Host.Config; 
namespace MyFunctionApp 
{ 
    public class Startup : IExtensionConfigProvider 
    { 
    public void Initialize(ExtensionConfigContext context) 
    { 
     // Put your intialization code here. 
    } 
    } 
} 
+1

중요한 사실은 'IExtensionConfigProvider'는 함수 중 하나에서 사용자 정의 바인딩을 사용하지 않는 한로드되지 않는다는 것입니다. [this answer] (https : /stackoverflow.com/a/47548457/1171619) – Mikhail