2017-07-07 42 views
6

W portalu Azure można łatwo skonfigurować powiązania wyjściowe funkcji Azure na stronie "Integracja" tej funkcji. Ustawienia te W końcu przejdź do function.json.Jak określić powiązania wyjściowe funkcji Azure z podglądu 2 w Visual Studio 2017?

Specifying output bindings from Azure portal

Moje pytanie brzmi, jak mogę ustawić te wartości z programu Visual Studio? Kod wygląda następująco:

public static class SomeEventProcessor 
{ 
    [FunctionName("SomeEventProcessor")] 

    public static async Task<HttpResponseMessage> Run(
     [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, 
     TraceWriter log, 
     IAsyncCollector<EventInfo> outputQueue) 
    { 
     log.Info("C# HTTP trigger function processed a request."); 

     EventInfo eventInfo = new EventInfo(); //Just a container 
     eventInfo.SomeID = req.Headers.Contains("SomeID") ? req.Headers.GetValues("SomeID").First() : null; 

     //Write to a queue and promptly return 
     await outputQueue.AddAsync(eventInfo); 

     return req.CreateResponse(HttpStatusCode.OK); 

    } 
} 

Chcę, aby określić, która kolejka i który przechowywanie w użyciu, z VS, tak, że mogę kontrolować moje źródło kod i config. Sprawdziłem podobne pytania, sugerowałem pytania itp., Ale żadna nie okazała się przydatna.

Używam Visual Studio 2017 Preview, wersja 15.3.0 Podgląd 3

VS Rozszerzenie: Azure narzędzia funkcyjne dla VS, wersja 0.2

Odpowiedz

8

Wiązania są określane po prostu jako wyzwalacz, używając atrybutów parametry, z którymi powinni się związać. Konfiguracja powiązania (na przykład nazwa kolejki, połączenie itp.) Jest dostarczana jako parametry/właściwości atrybutu.

Korzystanie kod jako przykład, wyjście kolejka wiążący będzie wyglądać następująco:

public static class SomeEventProcessor 
{ 
    [FunctionName("SomeEventProcessor")] 

    public static async Task<HttpResponseMessage> Run(
     [HttpTrigger(AuthorizationLevel.Function, "get", "post")]HttpRequestMessage req, 
     TraceWriter log, 
     [Queue("myQueueName", Connection = "myconnection")] IAsyncCollector<EventInfo> outputQueue) 
    { 
     log.Info("C# HTTP trigger function processed a request."); 

     EventInfo eventInfo = new EventInfo(); //Just a container 
     eventInfo.SomeID = req.Headers.Contains("SomeID") ? req.Headers.GetValues("SomeID").First() : null; 

     //Write to a queue and promptly return 
     await outputQueue.AddAsync(eventInfo); 

     return req.CreateResponse(HttpStatusCode.OK); 

    } 
} 

Jeśli dopiero powrocie do 200 od swojej funkcji HTTP (Ok), można furtner uproszczenie kodu przez stosując atrybut metody za return wartości, która ponownie przy użyciu kodu jako przykład, może wyglądać następująco:

[FunctionName("SomeEventProcessor")] 
[return: Queue("myQueueName", Connection = "myconnection")] 
public static EventInfo Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post")]HttpRequestMessage req, 
    TraceWriter log) 
{ 
    log.Info("C# HTTP trigger function processed a request."); 

    EventInfo eventInfo = new EventInfo(); //Just a container 
    eventInfo.SomeID = req.Headers.Contains("SomeID") ? req.Headers.GetValues("SomeID").First() : null; 

    return eventInfo; 
} 

stosując powyższy kod, funkcje Azure automatycznie powróci do 200, gdy funkcje uda i 500 whe n/jeśli zostanie zgłoszony wyjątek.

+0

Co będzie dekoratorem dla NotificationHub, który zastąpi kolejkę w tym wierszu kodu: [Queue ("myQueueName", Connection = "myconnection")]. Sprawdziłem i nie widziałem NotificationHub – Devsined