I would like to have a service that is capable of starting an orchestration. I am using isolated model. Is it possible to inject DurableTaskClient through dependency injection?
I tried configuring service below and while DurableTaskClient gets injected it throws an exception. I suspect GRPC needs to be additionally configured somehow, maybe to point to task hub or something like that.
Any advice?
`
using DurableFuncExperiment;
using Microsoft.Azure.Functions.Worker;
using Microsoft.DurableTask.Client;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var host = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureServices(services =>
{
services.AddApplicationInsightsTelemetryWorkerService();
services.ConfigureFunctionsApplicationInsights();
services.AddTransient<DurableTaskService, DurableTaskService>();
services.AddDurableTaskClient((builder) =>
{
builder.UseGrpc();
});
})
.Build();
host.Run();
using Microsoft.DurableTask.Client;
namespace DurableFuncExperiment;
public class DurableTaskService(DurableTaskClient durableTaskClient)
{
public async Task Execute()
{
string instanceId = await durableTaskClient.ScheduleNewOrchestrationInstanceAsync(Function.SayHelloEventOrchestrator);
}
}`
Executed 'Functions.Jobs_SayHelloEventOrchestrator' (Failed, Id=9bc3cec2-749e-4a4a-9f6a-1b821839d6d4, Duration=6741ms) [2024-10-11T03:24:15.460Z] System.Private.CoreLib: Exception while executing function: Functions.Jobs_SayHelloEventOrchestrator. System.Private.CoreLib: Result: Failure Exception: System.MissingMethodException: Method not found: 'System.String Microsoft.DurableTask.Protobuf.ExecutionStartedEvent.get_CorrelationData()'. [2024-10-11T03:24:15.467Z] at Microsoft.DurableTask.ProtoUtils.ConvertHistoryEvent(HistoryEvent proto) [2024-10-11T03:24:15.469Z] at System.Linq.Enumerable.SelectIListIterator
2.MoveNext() [2024-10-11T03:24:15.475Z] at Microsoft.DurableTask.Worker.Grpc.GrpcOrchestrationRunner.LoadAndRun(String encodedOrchestratorRequest, ITaskOrchestrator implementation, IServiceProvider services) [2024-10-11T03:24:15.479Z] at Microsoft.Azure.Functions.Worker.Extensions.DurableTask.DurableTaskFunctionsMiddleware.RunOrchestrationAsync(FunctionContext context, BindingMetadata triggerBinding, FunctionExecutionDelegate next) in /_/src/Worker.Extensions.DurableTask/DurableTaskFunctionsMiddleware.cs:line 58 [2024-10-11T03:24:15.483Z] at Microsoft.Azure.Functions.Worker.FunctionsApplication.InvokeFunctionAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\FunctionsApplication.cs:line 77 [2024-10-11T03:24:15.491Z] 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.DurableTask.ProtoUtils.ConvertHistoryEvent(HistoryEvent proto) [2024-10-11T03:24:15.494Z] at System.Linq.Enumerable.SelectIListIterator2.MoveNext() [2024-10-11T03:24:15.496Z] at Microsoft.DurableTask.Worker.Grpc.GrpcOrchestrationRunner.LoadAndRun(String encodedOrchestratorRequest, ITaskOrchestrator implementation, IServiceProvider services) [2024-10-11T03:24:15.498Z] at Microsoft.Azure.Functions.Worker.Extensions.DurableTask.DurableTaskFunctionsMiddleware.RunOrchestrationAsync(FunctionContext context, BindingMetadata triggerBinding, FunctionExecutionDelegate next) in //src/Worker.Extensions.DurableTask/DurableTaskFunctionsMiddleware.cs:line 58 [2024-10-11T03:24:15.501Z] at Microsoft.Azure.Functions.Worker.FunctionsApplication.InvokeFunctionAsync(FunctionContext context) in D:\a_work\1\s\src\DotNetWorker.Core\FunctionsApplication.cs:line 77 [2024-10-11T03:24:15.511Z] at Microsoft.Azure.Functions.Worker.Handlers.InvocationHandler.InvokeAsync(InvocationRequest request) in D:\a_work\1\s\src\DotNetWorker.Grpc\Handlers\InvocationHandler.cs:line 88. [2024-10-11T03:24:15.514Z] ede0fd849a0d409b9f0c4bee61e938fb: Function 'Jobs_SayHelloEventOrchestrator (Orchestrator)' failed with an error. Reason: Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: Functions.Jobs_SayHelloEventOrchestrator [2024-10-11T03:24:15.517Z] ---> Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcException: Result: Failure Exception: System.MissingMethodException: Method not found: 'System.String Microsoft.DurableTask.Protobuf.ExecutionStartedEvent.get_CorrelationData()'. [2024-10-11T03:24:15.521Z] at Microsoft.DurableTask.ProtoUtils.ConvertHistoryEvent(HistoryEvent proto) [2024-10-11T03:24:15.523Z] at System.Linq.Enumerable.SelectIListIterator2.MoveNext() [2024-10-11T03:24:15.524Z] at Microsoft.DurableTask.Worker.Grpc.GrpcOrchestrationRunner.LoadAndRun(String encodedOrchestratorRequest, ITaskOrchestrator implementation, IServiceProvider services) [2024-10-11T03:24:15.526Z] at Microsoft.Azure.Functions.Worker.Extensions.DurableTask.DurableTaskFunctionsMiddleware.RunOrchestrationAsync(FunctionContext context, BindingMetadata triggerBinding, FunctionExecutionDelegate next) in /_/src/Worker.Extensions.DurableTask/DurableTaskFunctionsMiddleware.cs:line 58 [2024-10-11T03:24:15.528Z] at Microsoft.Azure.Functions.Worker.FunctionsApplication.InvokeFunctionAsync(FunctionContext context) in D:\a\_work\1\s\src\DotNetWorker.Core\FunctionsApplication.cs:line 77 [2024-10-11T03:24:15.530Z] 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.DurableTask.ProtoUtils.ConvertHistoryEvent(HistoryEvent proto) [2024-10-11T03:24:15.535Z] at System.Linq.Enumerable.SelectIListIterator2.MoveNext() [2024-10-11T03:24:15.537Z] at Microsoft.DurableTask.Worker.Grpc.GrpcOrchestrationRunner.LoadAndRun(String encodedOrchestratorRequest, ITaskOrchestrator implementation, IServiceProvider services) [2024-10-11T03:24:15.540Z] at Microsoft.Azure.Functions.Worker.Extensions.DurableTask.DurableTaskFunctionsMiddleware.RunOrchestrationAsync(FunctionContext context, BindingMetadata triggerBinding, FunctionExecutionDelegate next) in //src/Worker.Extensions.DurableTask/DurableTaskFunctionsMiddleware.cs:line 58 [2024-10-11T03:24:15.542Z] at Microsoft.Azure.Functions.Worker.FunctionsApplication.InvokeFunctionAsync(FunctionContext context) in D:\a_work\1\s\src\DotNetWorker.Core\FunctionsApplication.cs:line 77 [2024-10-11T03:24:15.544Z] at Microsoft.Azure.Functions.Worker.Handlers.InvocationHandler.InvokeAsync(InvocationRequest request) in D:\a_work\1\s\src\DotNetWorker.Grpc\Handlers\InvocationHandler.cs:line 88 [2024-10-11T03:24:15.546Z] at Microsoft.Azure.WebJobs.Script.Description.WorkerFunctionInvoker.InvokeCore(Object[] parameters, FunctionInvocationContext context) in //src/WebJobs.Script/Description/Workers/WorkerFunctionInvoker.cs:line 101 [2024-10-11T03:24:15.551Z] at Microsoft.Azure.WebJobs.Script.Description.FunctionInvokerBase.Invoke(Object[] parameters) in //src/WebJobs.Script/Description/FunctionInvokerBase.cs:line 82 [2024-10-11T03:24:15.553Z] at Microsoft.Azure.WebJobs.Script.Description.FunctionGenerator.Coerce[T](Task1 src) in /_/src/WebJobs.Script/Description/FunctionGenerator.cs:line 225 [2024-10-11T03:24:15.556Z] at Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker2.InvokeAsync(Object instance, Object[] arguments) in D:\a_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionInvoker.cs:line 53 [2024-10-11T03:24:15.558Z] at Microsoft.Azure.WebJobs.Extensions.DurableTask.OutOfProcMiddleware.<>c__DisplayClass10_0.<b__0>d.MoveNext() in D:\a_work\1\s\src\WebJobs.Extensions.DurableTask\OutOfProcMiddleware.cs:line 130 [2024-10-11T03:24:15.560Z] --- End of stack trace from previous location --- [2024-10-11T03:24:15.561Z] at Microsoft.Azure.WebJobs.Host.Executors.TriggeredFunctionExecutor`1.<>c__DisplayClass7_0.<b__0>d.MoveNext() in D:\a_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\TriggeredFunctionExecutor.cs:line 51 [2024-10-11T03:24:15.563Z] --- End of stack trace from previous location --- [2024-10-11T03:24:15.568Z] at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.InvokeWithTimeoutAsync(IFunctionInvoker invoker, ParameterHelper parameterHelper, CancellationTokenSource timeoutTokenSource, CancellationTokenSource functionCancellationTokenSource, Boolean throwOnTimeout, TimeSpan timerInterval, IFunctionInstance instance) in D:\a_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:line 581 [2024-10-11T03:24:15.572Z] at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithWatchersAsync(IFunctionInstanceEx instance, ParameterHelper parameterHelper, ILogger logger, CancellationTokenSource functionCancellationTokenSource) in D:\a_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:line 527 [2024-10-11T03:24:15.574Z] at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(IFunctionInstanceEx instance, FunctionStartedMessage message, FunctionInstanceLogEntry instanceLogEntry, ParameterHelper parameterHelper, ILogger logger, CancellationToken cancellationToken) in D:\a_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:line 306 [2024-10-11T03:24:15.576Z] --- End of inner exception stack trace --- [2024-10-11T03:24:15.578Z] at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(IFunctionInstanceEx instance, FunctionStartedMessage message, FunctionInstanceLogEntry instanceLogEntry, ParameterHelper parameterHelper, ILogger logger, CancellationToken cancellationToken) in D:\a_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:line 352 [2024-10-11T03:24:15.583Z] at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryExecuteAsync(IFunctionInstance functionInstance, CancellationToken cancellationToken) in D:\a_work\1\s\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs:line 108. IsReplay: False. State: Failed. RuntimeStatus: Failed. HubName: TestHubName. AppName: . SlotName: . ExtensionVersion: 2.13.1. SequenceNumber: 11. TaskEventId: -1

