gpt4 book ai didi

c# - 为什么 Azure Function v2 无法绑定(bind)到 CloudTable?

转载 作者:行者123 更新时间:2023-12-04 11:59:32 27 4
gpt4 key购买 nike

我正在尝试在 Visual Studio 2019 中运行 HTTP 触发的 v2 函数。它应该将其输出写入名为“history”的 Azure 存储表中。

我用它装饰了一个函数

[返回:表("历史记录")]

我让它返回TableEntity的子类。

这会导致出现“无法将表绑定(bind)到 CloudTable”的异常。异常的原因是在 CloudStorageAccount 客户端代码中进行了检查:

bool bindsToEntireTable = tableAttribute.RowKey == null;
if (bindsToEntireTable)
{
// This should have been caught by the other rule-based binders.
// We never expect this to get thrown.
throw new InvalidOperationException("Can't bind Table to type '" + parameter.ParameterType + "'.");
}

另一个函数作为输入参数绑定(bind)到 CloudTable 并遇到相同的异常。

虽然绑定(bind)到 CloudTable 应该可以工作 ( https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-table#input---c-example---cloudtable ),但显然不行。

这是 Azure 存储客户端 SDK 中的错误还是我做错了什么?我正在引用这些 Nuget 包:

 <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="1.8.3" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.6" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="2.2.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />

最佳答案

问题是两个 Nuget 包的版本不匹配。创建新解决方案时,我无法复制该问题,并且绑定(bind)到 CloudTable 工作得很好。与我的解决方案相比,发现我的函数项目引用了另一个项目,该项目依赖于

WindowsAzure.Storage (9.3.3)

因为我需要其中的 TableEntity 类型。

现在事情变得棘手了。函数项目有引用

Microsoft.Azure.WebJobs.Extensions.Storage (3.0.6)

and that one has a dependency on

WindowsAzure.Storage (9.3.1)

9.3.3和9.3.1版本差异导致绑定(bind)问题。解决方案是在引用的项目中降级到 9.3.1

或者(可能是推荐的):从引用的项目中删除 WindowsAzure.Storage 并将其替换为 Microsoft.Azure.Cosmos.Table,其中也包含 TableEntity 重要提示请勿将其与已弃用的 Microsoft.Azure.CosmosDB.Table(注意“DB”)混淆。不幸的是,WindowsAzure.Storage (9.3.3) tell us to change to exactly that incorrect package 的评论.

脑震荡:真是一团糟:-)

关于c# - 为什么 Azure Function v2 无法绑定(bind)到 CloudTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com