2017-12-14 1 views
0

테이블로 출력 할 Azure 함수를 만들려고합니다. 나는 Azure Function App을 사용하고 있습니다. 그래서 현재 이해하고 있듯이 SDK에 의해 function.json이 생성되었습니다. 내 함수 정의는 다음과 같습니다 :출력 바인딩 및 function.json 생성

public static HttpResponseMessage Run(
     [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequestMessage req, 
     TraceWriter log, 
     [StorageAccount("table_storage")] ICollector<TableItem> outputTable) 

TableEntity를 상속 한 클래스로 TableItem을 정의했습니다. 나는이를 배포하고 생성 된 function.json 볼 때, 그것은 바인딩 출력 매개 변수를 언급하지 않습니다

{ 
    "generatedBy": "Microsoft.NET.Sdk.Functions.Generator-1.0.7", 
    "configurationSource": "attributes", 
    "bindings": [ 
    { 
     "type": "httpTrigger", 
     "methods": [ 
     "post" 
     ], 
     "authLevel": "function", 
     "name": "req" 
    } 
    ], 
    "disabled": false, 
    "scriptFile": "../bin/FunctionApp5.dll", 
    "entryPoint": "FunctionApp5.DeliveryComplete.Run" 
} 

내가 비주얼 스튜디오에서 이것을 실행하면, 나는 다음과 같은 오류 얻을 :

Cannot bind parameter 'outputTable' to type ICollector`1 

이 동작에 대한 몇 가지 질문이 있습니다. 첫 번째와 주된 이유는 function.json이 출력 바인딩을 표시하지 않는 이유는 무엇입니까? 둘째, 왜 VS에서 배포 할 때이 편집 할 수없는 이해하지만, 짐작하지 않고 바인딩을 관리 할 수있는 방법이 있습니다 (나는 this post의 ICollector를 사용하여 왔지만) 다른 곳에서는 찾을 수 없습니다. 또는 거기 있으면 안된다.

마지막으로 데스크톱에서 실행되는 (또는 실행되는) 기능이 게시 된 기능과 어떻게 상호 작용합니까? 즉, 기능의 게시 된 버전에 연결합니까, 아니면 로컬로 function.json을 생성합니까? 혼란의 일반적인 원인이지만, 입력 및 출력 바인딩이 function.json 생성에 표시되지 않습니다

답변

2
  1. 만 트리거는 않습니다. 그들은 여전히 ​​정상적으로 작동 할 것입니다.

  2. 테이블 저장소에 쓰려면 StorageAccount 대신 Table 특성을 사용해야합니다. ICollectorAzure Table storage bindings for Azure Functions에 언급되어 있습니다.

  3. 로컬에서 실행중인 파일은 Azure에 배포하지 않고 로컬에서 실행되고 로컬 런타임으로 실행됩니다. 그들은 여전히 ​​바인딩을 통해 실제 Azure 서비스와 상호 작용할 수 있습니다.

+0

감사합니다. 왜 이것이 일반적인 혼란의 원인인지 알 수 있습니다. 공유 한 링크는 출력 바인딩의 예를 보여줍니다. 그냥 안된다. 3, 서버에서 function.json이 무엇이든간에 (생성 된?) 하나를 사용한다는 것을 의미합니까? –

+0

@ pm_2 Azure에 배포 된 것은 로컬로 실행하는 것에 영향을주지 않습니다. – Mikhail

+0

고마워요 - 그게 잘 작동하는 것 같습니다. 그것은 다른 질문 일지 모르지만, TableItem이 ITableEntity를 구현하고 (그리고 RowKey를 구현하는) TableEntity에서 상속 받기 때문에 "테이블 엔티티 유형이 RowKey 속성을 구현해야합니다"라는 오류로 진행됩니다. –