使用IQueryable时,表属性绑定不起作用<t>

时间:2017-10-31 13:00:24

标签: azure azure-functions azure-table-storage

我有一个Azure应用程序功能,我想从天蓝色存储表中读取。我是azure函数和表存储的新手。但无法让样品正常工作。

这些功能在Visual Studio 2017中创建并发布到azure。

app功能有2个功能,1个用于发布,1个用于获取。 帖子功能按预期工作。

getter函数失败,出现以下错误:

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

获取功能:

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

post和get方法之间的唯一区别是它们的签名。 post为ICollector接口设置tableattribute。

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

get设置IQueryable接口的表属性

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

任何输入都表示赞赏。

这几乎是为使用表存储而提供的默认示例。

1 个答案:

答案 0 :(得分:0)

使用IQueryable时,T必须从Storage SDK实现ITableEntity(或从TableEntity派生)。 ICollector没有这个约束。

请务必使用与Microsot.NET.SDK.Functions参考相同的您项目已存在的存储SDK版本(而不是引入一个并排加载的新的不同存储SDK)。

这里有一些更多的细节,https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-table,虽然这些例子是* .CSX(其中绑定在一个单独的function.json文件中)和 不是* .cs(绑定是内联属性)。但C#类型和规则是相同的。