6

I have the following function in my project:

[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}");
}

When I attempt to run the function locally using v1.0.4 of the Azure Functions CLI I get this error:

Microsoft.Azure.WebJobs.Host: Error indexing method 'SampleFunction.Run'. Microsoft.Azure.WebJobs.Host: Can't bind BlobTrigger to type 'Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob'.

All documentation I have seen for Azure Functions and WebJobs SDK say this is supported.

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

2 Answers 2

7

You are probably referencing some NuGet package that has a dependency on non-compatible version of WindowsAzure.Storage assembly (version 8.x.x). If so, be sure to remove it. Unless you are using some additional binding, your csproj references should look as simple as this:

<ItemGroup>           
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.6" />
</ItemGroup>
Sign up to request clarification or add additional context in comments.

2 Comments

That was exactly the issue. I had other code that required 8.x.x that I removed to simplify the example. Once I removed the reference everything worked as expected. Thanks!
Yeh, that's a known problem with assembly version conflicts and lack of binding redirects. Very confusing, but no proper solution yet.
0

Make sure you are running the Azure Storage Emulator:

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'.

1 Comment

He's probably just connecting to Azure Storage. Connectivity issue will give another error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.