3

私は私のプロジェクトでは、以下の機能を持っている:Azure関数でBlobTriggerを使用してCloudBlockBlobにバインドするにはどうすればよいですか?

[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デベロッパーを使用してローカルで機能を実行しようと、私はこのエラーを取得する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の関数を見たことがあり、WebJobs SDKはこれがサポートされていると言います。

https://github.com/Azure/azure-webjobs-sdk/wiki/Blobs#-types-that-you-can-bind-to-blobs

答えて

3

おそらくWindowsAzure.Storageアセンブリ(バージョン8.x.x)の非互換性のあるバージョンに依存しているいくつかのNuGetパッケージを参照しています。その場合は、必ず取り外してください。あなたには、いくつかの追加の結合を使用している場合を除き、ごcsproj参照は、このような単純なはずです。

<ItemGroup>   
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.6" /> 
</ItemGroup> 
+0

。この例を単純化するために削除した8.x.x以外のコードがありました。参照を削除すると、すべてが期待通りに機能しました。ありがとう! – Mike

+0

Yeh、これはアセンブリバージョンの競合とバインドリダイレクトの不足に関する既知の問題です。非常に混乱しますが、まだ適切な解決策はありません。 – Mikhail

0

あなたは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'. 
+0

彼はたぶんAzure Storageに接続しています。接続の問題により別のエラーが発生する。 – Mikhail

関連する問題