如何使用 BlobTrigger 绑定到 Azure 函数中的 CloudBlockBlob?
Posted
技术标签:
【中文标题】如何使用 BlobTrigger 绑定到 Azure 函数中的 CloudBlockBlob?【英文标题】:How can I use a BlobTrigger to bind to CloudBlockBlob in an Azure Function? 【发布时间】:2018-04-07 00:28:37 【问题描述】:我的项目中有以下功能:
[FunctionName("my-func")]
public static async Task Run([BlobTrigger("data/name")] CloudBlockBlob blob, string name, TraceWriter log)
log.Info($"Started Processing: name");
await blob.DeleteAsync();
log.Info($"Finished Processing: name");
当我尝试使用 v1.0.4 的 Azure Functions CLI 在本地运行该函数时,我收到此错误:
Microsoft.Azure.WebJobs.Host: Error indexing method 'SampleFunction.Run'. Microsoft.Azure.WebJobs.Host: Can't bind BlobTrigger to type 'Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob'.
我看到的有关 Azure Functions 和 WebJobs SDK 的所有文档都说这是受支持的。
https://github.com/Azure/azure-webjobs-sdk/wiki/Blobs#-types-that-you-can-bind-to-blobs
【问题讨论】:
【参考方案1】:您可能引用了一些 NuGet 包,该包依赖于不兼容版本的 WindowsAzure.Storage
程序集(版本 8.x.x
)。如果是这样,请务必将其删除。除非您使用一些额外的绑定,否则您的 csproj
引用应该看起来像这样简单:
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.6" />
</ItemGroup>
【讨论】:
这正是问题所在。我删除了其他需要 8.x.x 的代码以简化示例。一旦我删除了引用,一切都按预期工作。谢谢! 是的,这是程序集版本冲突和缺少绑定重定向的已知问题。非常混乱,但还没有合适的解决方案。【参考方案2】:确保您正在运行 Azure 存储模拟器:
cd C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator
C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator> AzureStorageEmulator.exe start
Windows Azure Storage Emulator 5.2.0.0 command line tool
Autodetect requested. Autodetecting SQL Instance to use.
Looking for a LocalDB Installation.
Probing SQL Instance: '(localdb)\MSSQLLocalDB'.
Found a LocalDB Installation.
Probing SQL Instance: '(localdb)\MSSQLLocalDB'.
Found SQL Instance (localdb)\MSSQLLocalDB.
Creating database AzureStorageEmulatorDb52 on SQL instance '(localdb)\MSSQLLocalDB'.
【讨论】:
他可能只是连接到 Azure 存储。连接问题将给出另一个错误。以上是关于如何使用 BlobTrigger 绑定到 Azure 函数中的 CloudBlockBlob?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Azure 的 ACS 时如何注销 Facebook?
IOS - 运行脚本'[CP-User] Generate Specs 以下构建命令失败:PhaseScriptExecution [CP-User]\ Generate\ Specs In Azur