持久活动功能可以使用绑定属性吗? [英] Can Durable Activity Functions use binding attributes?

查看:89
本文介绍了持久活动功能可以使用绑定属性吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

看来我不能拥有使用Blob绑定的活动功能.下面给出了运行时错误:

It appears that I cannot have an activity function which uses a Blob binding. The following gives runtime errors:

[StorageAccount("AzureWebJobsStorage")]
[FunctionName("LoadBlobFromBlobStorage")]
public static async Task<string> Run([ActivityTrigger] string blobName,
[Blob("containerName/directoryName/{blobName}", FileAccess.ReadWrite, Connection = AzureWebJobsStorage")] CloudBlockBlob blob,
ILogger log)
{
    ...
}

我收到多个失败的绑定错误消息.耐用功能不能解析绑定吗?

I get multiple failed binding error messages. Do Durable Functions not resolve bindings?

添加错误消息(降低冗长程度...):

add error messages (with reduced verbosity ...):

Azure Functions Core Tools (2.4.379 Commit hash: ab2c4db3b43f9662b82494800dd770698788bf2d)
Function Runtime Version: 2.0.12285.0
2019-02-21T18:25:32.165 [Error] Error indexing method 'LoadBlobFromBlobStorage'
Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException : Error indexing method 'LoadBlobFromBlobStorage' ---> System.InvalidOperationException : Can't bind Blob to type 'Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob'.
Possible causes:
1) Tried binding to 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory...' but user type assembly was 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory... .
2) Tried binding to 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer...' but user type assembly was 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory... .
3) Tried binding to 'Microsoft.Azure.WebJobs.Host.Blobs.Bindings.BlobsExtensionConfigProvider+MultiBlobContext, Microsoft.Azure.WebJobs.Extensions.Storage, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' but user type assembly was 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory... .
4) Tried binding to 'System.IO.Stream, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' but user type assembly was 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory... .
5) Tried binding to 'Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob...' but user type assembly was 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory... .
6) Tried binding to 'Microsoft.WindowsAzure.Storage.Blob.CloudPageBlob...' but user type assembly was 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory... .
7) Tried binding to 'Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob...' but user type assembly was 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory... .
8) Tried binding to 'Microsoft.WindowsAzure.Storage.Blob.ICloudBlob...' but user type assembly was 'Microsoft.WindowsAzure.Storage.Blob.CloudBlobDirectory... .

   at async Microsoft.Azure.WebJobs.Host.Bindings.GenericCompositeBindingProvider`1.TryCreateAsync[TAttribute](BindingProviderContext context) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Bindings\BindingProviders\GenericCompositeBindingProvider.cs : 89
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

推荐答案

确保已安装所需的软件包,例如

Make sure the package required are installed e.g.

<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.3" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />

在blob输入绑定中,对于绑定类型为CloudBlobDirectory的路径应采用containerName/directoryName的格式.请参见示例中的container可疑.

And in the blob input binding, for binding type CloudBlobDirectory, the path should be in the format of containerName/directoryName. See container in your sample which is suspicious.

我们还可以将传入参数blobName放在blob路径中,以直接获取CloudBlockBlob.

We could also put the incoming parameter blobName in blob path to get CloudBlockBlob directly.

[Blob("containerName/directoryName/{blobName}", FileAccess.ReadWrite, Connection = "AzureWebJobsStorage")] CloudBlockBlob blob 

更新

确保我们没有安装WindowsAzure.Storage> = v9.3.2,绑定到与存储相关的数据类型(如CloudBlockBlob)时似乎出现了错误.参见问题.

Make sure we don't install WindowsAzure.Storage >= v9.3.2, there seems a bug when binding to Storage related data type like CloudBlockBlob. See the issue tracked.

创建v2功能项目时,默认情况下,Microsoft.NET.SDK.Functions引用WindowsAzure.Storage 9.3.1.此版本运行良好,无需单独安装软件包.

When we create a v2 Function Project, Microsoft.NET.SDK.Functions references WindowsAzure.Storage 9.3.1 by default. This version works well, no need to install the package separately.

或者我们可以在新版本的Storage SDK中使用像Streamstring这样的数据类型.

Or we could use datatype like Stream or string with new version Storage SDK.

这篇关于持久活动功能可以使用绑定属性吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆