2017-12-14 5 views
0

テーブルに出力するAzure関数を作成しようとしています。私はAzure関数Appを使用しているので、現在理解しているように、function.jsonはSDKによって私のために生成されます。私の関数の定義は次の通りです:出力バインドと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" 
} 

私は、Visual Studioからこれを実行する場合、私は次のエラーを取得する:

Cannot bind parameter 'outputTable' to type ICollector`1 

私はこの動作に関するいくつかの質問があります:最初と主なものは、function.jsonが出力バインディングを表示しないのはなぜですか?第2に、VSから展開するときにこれを編集できない理由を理解していますが、推測なしにバインディングを管理する方法があります(私はthis postのICollectorを使用していました)が、またはそこにはいけません。

最後に、これをデスクトップから実行すると、公開された関数とどのように対話しますか:関数の公開バージョンに接続するのか、function.jsonをローカルに生成しますか?

答えて

2
  1. 混乱の共通ソースだが、入力と出力のバインディングが発生function.jsonに表示されていないことを、唯一のトリガはありません。彼らはまだ正常に動作します。

  2. テーブルストレージに書き込む場合は、StorageAccountの代わりにTable属性を使用する必要があります。 ICollectorAzure Table storage bindings for Azure Functionsに記載されています。

  3. ローカルで実行している場合、ファイルはローカルに保持され、Azureにデプロイメントされずにローカルランタイムで実行されます。彼らは依然としてバインディングを介して実際のAzureサービスとやりとりすることができます。

+0

ありがとう。私はなぜそれが混乱の一般的な原因であるかを見ることができます。あなたが共有しているリンクは、出力バインディングの例を示しています。ちょうどいいえではっきりするように。 3、あなたは、サーバー上のfunction.jsonが何であれ、(生成された?)1を使用することを意味しますか? –

+0

@ pm_2 Azureにデプロイされているものは、ローカルで実行するものには影響しません。 – Mikhail

+0

ありがとうございます - それはうまくいくようです(より良い)。これは別の質問かもしれませんが、TableItemはITableEntityを実装するTableEntityから継承されているため(RowKeyを実装しています)、「テーブルエンティティタイプはRowKeyプロパティを実装する必要があります」というエラーが発生しました。 –

関連する問題