2017-10-31 7 views
1

私は紺碧のストレージテーブルから読みたいAzureのアプリケーション機能を持っています。私は青空関数とテーブルストレージに新しいです。しかし、サンプルを適切に動作させることはできません。テーブルアトリビュートバインディングがIQueryableを使用しているときに動作しない<T>

これらの関数は、Visual Studio 2017で作成され、紺碧に公開されます。

app関数には、投稿用と取得用の2つの関数があります。 投稿機能は期待通りに機能します。

getter関数は以下のエラーで失敗します。

internal error 500: "'TableName' can't be invoked from Azure WebJobs SDK. Is it missing Azure WebJobs SDK attributes?" 

Get関数:

[FunctionName("FunctionName")] 
    public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "get")]HttpRequestMessage req, [Table("TableName", Connection = "Default")]IQueryable<Person> inTable, TraceWriter log) 
    { 
     return req.CreateResponse(HttpStatusCode.OK); 
    } 

ポストの唯一の違いやメソッドを取得しますが、自分の署名です。 ポストは、ICollectorインターフェイスのテーブル属性を設定します。

[Table("TableName", Connection = "Default")]ICollector<Person> outTable 

とgetはのIQueryableインターフェイス

[Table("TableName", Connection = "Default")]IQueryable<Person> inTable 

任意の入力用のテーブル属性を設定しますが理解されます。

これは、ほとんどの場合、テーブルストレージを扱うために提供されるデフォルトのサンプルです。

+0

あなたの投稿には、 "AssetAdressBook"として指定されたテーブル名があり、取得するために "TableName"を持っています。 "TableName"というテーブルが本当にあるのですか、それとも "AssetAdressBook"に置き換えられたのでしょうか? – jeffhollan

+0

ああ、それを忘れてしまった。私のコードでは同じです。 – ambsorensen

答えて

0

IQueryableを使用する場合、TはITableEntity(またはTableEntityから派生)をStorage SDKから実装する必要があります。 ICollectorにはこの制約はありません。

プロジェクトがMicrosot.NET.SDK.Functionsリファレンスと同じバージョンのストレージSDKを使用していることを確認してください(サイドバイサイドで読み込まれる別の新しいストレージSDKを使用しないでください) 。

これらの例は、*(バインディングは、別function.jsonファイル内にある).CSXと(バインディングはインライン属性です) *ない.csファイルですが、いくつかの詳細はhttps://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-tableは、ここにあります。しかし、C#の種類と規則は同じです。

+0

personクラスはITableEntityに実装されています。私は参照をチェックアウトします。ありがとう – ambsorensen

関連する問題