我有一个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
任何输入都表示赞赏。
这几乎是为使用表存储而提供的默认示例。
答案 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#类型和规则是相同的。