Azure / Azure/azure-functions-dotnet-worker

Runtime exception after running .net upgrade assistant from 6 to 8 and converting to isolated worker model

Open
#2,444 8 comments 0 reactions 1 assignee Claimed by @RohitRanjanMS View on GitHub
area: dotnet-upgrade-assistant area: migration extensions: cosmos-db
Dominant language
C#
Stars
466
Forks
215
Avg merge
3d 10h
Merged PRs (30d)
7

Description

### Description

I had a .net 6 in-process model function app which has a HTTP Trigger and a CosmosDBInput binding.
I ran the .net upgrade assistant to convert to a .net 8 isolated worker model. It claimed success but left me with a bunch of Cosmos binding related errors. I tried fixing them manually and got it running, but now I'm getting a really strange runtime exception "FunctionInputConverterException".

It seems to wrap the real failure to find assembly Microsoft.Bcl.AsyncInterfaces 5.0.0.0

Related complaint: The [examples section for isolated model](https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb-v2-input?tabs=python-v2%2Cisolated-process%2Cnodejs-v4%2Cextensionv4&pivots=programming-language-csharp#example) is very sparse and deserves to expanded to cover more examples.

As far as I can tell from the Usage section, it should support IEnumerable and if I don't specify Id or SqlQuery, then it will return all documents.

```
[Function("ListEditors")]
public static Task Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
[CosmosDBInput(databaseName: "EditorList", containerName: "Items", Connection = "CosmosDbReadOnlyConnectionString")] IEnumerable documents)
```

The CosmosDBInput binding is just supposed to return all items in the database's container but fails with below exception. I'm not using any variables from the route (which is a known bug)

```
[2024-05-07T03:39:50.885Z] Function 'ListEditors', Invocation id '7b5efa25-3d1d-4dfb-8db4-2c7789dca3b0': An exception was thrown by the invocation.
[2024-05-07T03:39:50.886Z] Result: Function 'ListEditors', Invocation id '7b5efa25-3d1d-4dfb-8db4-2c7789dca3b0': An exception was thrown by the invocation.
Exception: Microsoft.Azure.Functions.Worker.FunctionInputConverterException: Error converting 1 input parameters for Function 'ListEditors': Cannot convert input parameter 'documents' to type 'System.Collections.Generic.IEnumerable`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]' from type 'Microsoft.Azure.Functions.Worker.Grpc.Messages.GrpcModelBindingData'. Error:System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
[2024-05-07T03:39:50.888Z] File name: 'Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
[2024-05-07T03:39:50.888Z] at Microsoft.Azure.Functions.Worker.CosmosDBConverter.CreateTargetObjectAsync(Type targetType, CosmosDBInputAttribute cosmosAttribute)
[2024-05-07T03:39:50.890Z] at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
[2024-05-07T03:39:50.891Z] at Microsoft.Azure.Functions.Worker.CosmosDBConverter.CreateTargetObjectAsync(Type targetType, CosmosDBInputAttribute cosmosAttribute)
[2024-05-07T03:39:50.892Z] at Microsoft.Azure.Functions.Worker.CosmosDBConverter.ToTargetTypeAsync(Type targetType, CosmosDBInputAttribute cosmosAttribute) in D:\a\_work\1\s\extensions\Worker.Extensions.CosmosDB\src\CosmosDBConverter.cs:line 85
[2024-05-07T03:39:50.893Z] at Microsoft.Azure.Functions.Worker.CosmosDBConverter.ConvertFromBindingDataAsync(ConverterContext context, ModelBindingData modelBindingData) in D:\a\_work\1\s\extensions\Worker.Extensions.CosmosDB\src\CosmosDBConverter.cs:line 57
[2024-05-07T03:39:50.894Z] at Microsoft.Azure.Functions.Worker.Context.Features.DefaultFunctionInputBindingFeature.BindFunctionInputAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\Context\Features\DefaultFunctionInputBindingFeature.cs:line 94
[2024-05-07T03:39:50.895Z] at Foo.Azure.BarFunctionApp.DirectFunctionExecutor.ExecuteAsync(FunctionContext context) in E:\dev\frosted-azure-deployment\Apps\BarArtifacts\Foo.Azure.BarFunctionApp\obj\Debug\net8.0\Microsoft.Azure.Functions.Worker.Sdk.Generators\Microsoft.Azure.Functions.Worker.Sdk.Generators.FunctionExecutorGenerator\GeneratedFunctionExecutor.g.cs:line 31
[2024-05-07T03:39:50.896Z] at Microsoft.Azure.Functions.Worker.OutputBindings.OutputBindingsMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:\a\_work\1\s\src\DotNetWorker.Core\OutputBindings\OutputBindingsMiddleware.cs:line 13
[2024-05-07T03:39:50.897Z] at Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore.FunctionsHttpProxyingMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:\a\_work\1\s\extensions\Worker.Extensions.Http.AspNetCore\src\FunctionsMiddleware\FunctionsHttpProxyingMiddleware.cs:line 48
[2024-05-07T03:39:50.898Z] at Microsoft.Azure.Functions.Worker.FunctionsApplication.InvokeFunctionAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\FunctionsApplication.cs:line 89
Stack: at Microsoft.Azure.Functions.Worker.Context.Features.DefaultFunctionInputBindingFeature.BindFunctionInputAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\Context\Features\DefaultFunctionInputBindingFeature.cs:line 94
[2024-05-07T03:39:50.899Z] at Foo.Azure.BarFunctionApp.DirectFunctionExecutor.ExecuteAsync(FunctionContext context) in E:\dev\frosted-azure-deployment\Apps\BarArtifacts\Foo.Azure.BarFunctionApp\obj\Debug\net8.0\Microsoft.Azure.Functions.Worker.Sdk.Generators\Microsoft.Azure.Functions.Worker.Sdk.Generators.FunctionExecutorGenerator\GeneratedFunctionExecutor.g.cs:line 31
[2024-05-07T03:39:50.900Z] at Microsoft.Azure.Functions.Worker.OutputBindings.OutputBindingsMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:\a\_work\1\s\src\DotNetWorker.Core\OutputBindings\OutputBindingsMiddleware.cs:line 13
[2024-05-07T03:39:50.901Z] at Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore.FunctionsHttpProxyingMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:\a\_work\1\s\extensions\Worker.Extensions.Http.AspNetCore\src\FunctionsMiddleware\FunctionsHttpProxyingMiddleware.cs:line 48
[2024-05-07T03:39:50.902Z] at Microsoft.Azure.Functions.Worker.FunctionsApplication.InvokeFunctionAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\FunctionsApplication.cs:line 89.
[2024-05-07T03:39:50.976Z] Executed 'Functions.ListEditors' (Failed, Id=7b5efa25-3d1d-4dfb-8db4-2c7789dca3b0, Duration=1210ms)
[2024-05-07T03:39:50.978Z] System.Private.CoreLib: Exception while executing function: Functions.ListEditors. System.Private.CoreLib: Result: Failure
Exception: Microsoft.Azure.Functions.Worker.FunctionInputConverterException: Error converting 1 input parameters for Function 'ListEditors': Cannot convert input parameter 'documents' to type 'System.Collections.Generic.IEnumerable`1[[System.Object, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]' from type 'Microsoft.Azure.Functions.Worker.Grpc.Messages.GrpcModelBindingData'. Error:System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
[2024-05-07T03:39:50.981Z] File name: 'Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
[2024-05-07T03:39:50.983Z] at Microsoft.Azure.Functions.Worker.CosmosDBConverter.CreateTargetObjectAsync(Type targetType, CosmosDBInputAttribute cosmosAttribute)
[2024-05-07T03:39:50.985Z] at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
[2024-05-07T03:39:50.988Z] at Microsoft.Azure.Functions.Worker.CosmosDBConverter.CreateTargetObjectAsync(Type targetType, CosmosDBInputAttribute cosmosAttribute)
[2024-05-07T03:39:50.990Z] at Microsoft.Azure.Functions.Worker.CosmosDBConverter.ToTargetTypeAsync(Type targetType, CosmosDBInputAttribute cosmosAttribute) in D:\a\_work\1\s\extensions\Worker.Extensions.CosmosDB\src\CosmosDBConverter.cs:line 85
[2024-05-07T03:39:50.993Z] at Microsoft.Azure.Functions.Worker.CosmosDBConverter.ConvertFromBindingDataAsync(ConverterContext context, ModelBindingData modelBindingData) in D:\a\_work\1\s\extensions\Worker.Extensions.CosmosDB\src\CosmosDBConverter.cs:line 57
[2024-05-07T03:39:50.995Z] at Microsoft.Azure.Functions.Worker.Context.Features.DefaultFunctionInputBindingFeature.BindFunctionInputAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\Context\Features\DefaultFunctionInputBindingFeature.cs:line 94
[2024-05-07T03:39:50.998Z] at Foo.Azure.BarFunctionApp.DirectFunctionExecutor.ExecuteAsync(FunctionContext context) in E:\dev\frosted-azure-deployment\Apps\BarArtifacts\Foo.Azure.BarFunctionApp\obj\Debug\net8.0\Microsoft.Azure.Functions.Worker.Sdk.Generators\Microsoft.Azure.Functions.Worker.Sdk.Generators.FunctionExecutorGenerator\GeneratedFunctionExecutor.g.cs:line 31
[2024-05-07T03:39:51.000Z] at Microsoft.Azure.Functions.Worker.OutputBindings.OutputBindingsMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:\a\_work\1\s\src\DotNetWorker.Core\OutputBindings\OutputBindingsMiddleware.cs:line 13
[2024-05-07T03:39:51.003Z] at Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore.FunctionsHttpProxyingMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:\a\_work\1\s\extensions\Worker.Extensions.Http.AspNetCore\src\FunctionsMiddleware\FunctionsHttpProxyingMiddleware.cs:line 48
[2024-05-07T03:39:51.005Z] at Microsoft.Azure.Functions.Worker.FunctionsApplication.InvokeFunctionAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\FunctionsApplication.cs:line 89
[2024-05-07T03:39:51.007Z] at Microsoft.Azure.Functions.Worker.Handlers.InvocationHandler.InvokeAsync(InvocationRequest request) in D:\a\_work\1\s\src\DotNetWorker.Grpc\Handlers\InvocationHandler.cs:line 88
Stack: at Microsoft.Azure.Functions.Worker.Context.Features.DefaultFunctionInputBindingFeature.BindFunctionInputAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\Context\Features\DefaultFunctionInputBindingFeature.cs:line 94
[2024-05-07T03:39:51.009Z] at Foo.Azure.BarFunctionApp.DirectFunctionExecutor.ExecuteAsync(FunctionContext context) in E:\dev\frosted-azure-deployment\Apps\BarArtifacts\Foo.Azure.BarFunctionApp\obj\Debug\net8.0\Microsoft.Azure.Functions.Worker.Sdk.Generators\Microsoft.Azure.Functions.Worker.Sdk.Generators.FunctionExecutorGenerator\GeneratedFunctionExecutor.g.cs:line 31
[2024-05-07T03:39:51.011Z] at Microsoft.Azure.Functions.Worker.OutputBindings.OutputBindingsMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:\a\_work\1\s\src\DotNetWorker.Core\OutputBindings\OutputBindingsMiddleware.cs:line 13
[2024-05-07T03:39:51.013Z] at Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore.FunctionsHttpProxyingMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:\a\_work\1\s\extensions\Worker.Extensions.Http.AspNetCore\src\FunctionsMiddleware\FunctionsHttpProxyingMiddleware.cs:line 48
[2024-05-07T03:39:51.016Z] at Microsoft.Azure.Functions.Worker.FunctionsApplication.InvokeFunctionAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\FunctionsApplication.cs:line 89
[2024-05-07T03:39:51.018Z] at Microsoft.Azure.Functions.Worker.Handlers.InvocationHandler.InvokeAsync(InvocationRequest request) in D:\a\_work\1\s\src\DotNetWorker.Grpc\Handlers\InvocationHandler.cs:line 88.

```

### Steps to reproduce

1. Install and run Azure Cosmos DB Emulator. Wait a long time for the web page to load the UI. Note the primary connection string.
2. Run the function app in a local debug session
3. Note the console window shows the address or the function app's http trigger
4. use postman to send request to the url of the function app
5. Get exception

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.