【问题标题】:Table Attribute binding not working when using IQueryable<T>使用 IQueryable<T> 时表属性绑定不起作用
【发布时间】:2017-10-31 13:00:23
【问题描述】:

我有一个 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 方法之间的唯一区别是它们的签名。 该帖子为 ICollector 接口设置了 table 属性。

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

get 设置 IQueryable 接口的表属性

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

感谢任何输入。

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

【问题讨论】:

  • 在您的帖子中,您将表名指定为“AssetAdressBook”,并获得“TableName”。是否真的有一个名为“TableName”的表,或者如果用“AssetAdressBook”替换它也会起作用吗?
  • 哦,忘记编辑了。它们在我的代码中是相同的。

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


【解决方案1】:

使用 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# 类型和规则是相同的。

【讨论】:

  • person类实现了ITableEntity。我会查看参考资料。谢谢
猜你喜欢
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
相关资源
最近更新 更多