diff --git a/src/Dapr.Workflow/DaprWorkflowClientBuilderFactory.cs b/src/Dapr.Workflow/DaprWorkflowClientBuilderFactory.cs index 7a854cf05..8e284baf3 100644 --- a/src/Dapr.Workflow/DaprWorkflowClientBuilderFactory.cs +++ b/src/Dapr.Workflow/DaprWorkflowClientBuilderFactory.cs @@ -41,7 +41,7 @@ public DaprWorkflowClientBuilderFactory(IConfiguration configuration, IHttpClien _httpClientFactory = httpClientFactory; _services = services; } - + /// /// Responsible for building the client itself. /// @@ -50,17 +50,25 @@ public void CreateClientBuilder(Action configure) { _services.AddDurableTaskClient(builder => { + WorkflowRuntimeOptions options = new(); + configure?.Invoke(options); + var apiToken = DaprDefaults.GetDefaultDaprApiToken(_configuration); var grpcEndpoint = DaprDefaults.GetDefaultGrpcEndpoint(_configuration); - + var httpClient = _httpClientFactory.CreateClient(); if (!string.IsNullOrWhiteSpace(apiToken)) { - httpClient.DefaultRequestHeaders.Add( "Dapr-Api-Token", apiToken); + httpClient.DefaultRequestHeaders.Add("Dapr-Api-Token", apiToken); } - builder.UseGrpc(GrpcChannel.ForAddress(grpcEndpoint, new GrpcChannelOptions { HttpClient = httpClient })); + var channelOptions = options.GrpcChannelOptions ?? new GrpcChannelOptions + { + HttpClient = httpClient + }; + + builder.UseGrpc(GrpcChannel.ForAddress(grpcEndpoint, channelOptions)); builder.RegisterDirectly(); }); @@ -81,8 +89,12 @@ public void CreateClientBuilder(Action configure) httpClient.DefaultRequestHeaders.Add("Dapr-Api-Token", apiToken); } - builder.UseGrpc( - GrpcChannel.ForAddress(grpcEndpoint, new GrpcChannelOptions { HttpClient = httpClient })); + var channelOptions = options.GrpcChannelOptions ?? new GrpcChannelOptions + { + HttpClient = httpClient + }; + + builder.UseGrpc(GrpcChannel.ForAddress(grpcEndpoint, channelOptions)); } else {