2017-07-07 11 views
6

Trong cổng Azure, người ta có thể dễ dàng định cấu hình các kết buộc đầu ra của một hàm Azure, từ trang 'Tích hợp' của hàm đó. Các cài đặt này Cuối cùng đi vào hàm.joomla.Làm thế nào để xác định kết quả đầu ra của Azure Chức năng từ Visual studio 2017 xem trước 2?

Specifying output bindings from Azure portal

Câu hỏi của tôi là, làm thế nào tôi có thể thiết lập các giá trị từ Visual studio? Mã này trông như thế này:

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); 

    } 
} 

Tôi muốn để xác định các hàng đợi và đó lưu trữ để sử dụng, từ VS, vì vậy mà tôi có thể kiểm soát nguồn mã và cấu hình của tôi. Tôi đã kiểm tra các câu hỏi tương tự, các câu hỏi được đề xuất vv, nhưng không có câu nào tỏ ra hữu ích.

Tôi đang sử dụng Visual studio 2017 xem trước, phiên bản 15.3.0 Preview 3

VS mở rộng: công cụ Chức năng Azure cho VS, phiên bản 0.2

Trả lời

8

Các bindings được quy định giống như kích hoạt của bạn, sử dụng thuộc tính trên các thông số mà chúng phải được ràng buộc. Cấu hình ràng buộc (ví dụ: tên hàng đợi, kết nối, v.v.) được cung cấp dưới dạng tham số/thuộc tính thuộc tính.

Sử dụng mã của bạn là một ví dụ, một ràng buộc đầu ra hàng đợi sẽ trông như thế này:

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); 

    } 
} 

Nếu bạn chỉ trả lại một 200 từ chức năng HTTP của bạn (Ok), bạn có thể đơn giản hóa furtner mã của bạn bằng áp dụng các thuộc tính giá trị return của phương pháp, trong đó, một lần nữa sử dụng mã của bạn là một ví dụ, sẽ trông như thế này:

[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; 
} 

sử dụng đoạn mã trên, chức năng Azure sẽ tự động trả về một 200 khi chức năng của bạn thành công và một 500 whe n/nếu một ngoại lệ được ném.

+0

Trình trang trí cho NotificationHub sẽ thay thế Hàng đợi trong dòng mã sau: [Queue ("myQueueName", Connection = "myconnection")]. Tôi đã kiểm tra và tôi không thấy NotificationHub – Devsined

Các vấn đề liên quan