diff --git a/src/modules/Elsa.Http/Activities/WriteHttpResponse.cs b/src/modules/Elsa.Http/Activities/WriteHttpResponse.cs index ab6c43685..69cd8c0bf 100644 --- a/src/modules/Elsa.Http/Activities/WriteHttpResponse.cs +++ b/src/modules/Elsa.Http/Activities/WriteHttpResponse.cs @@ -10,6 +10,8 @@ using Elsa.Workflows.UIHints; using Elsa.Workflows.Exceptions; using Elsa.Workflows.Models; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Options; +using Elsa.Http.Options; namespace Elsa.Http; @@ -133,7 +135,12 @@ public class WriteHttpResponse : Activity await response.WriteAsync("The response includes a type that cannot be serialized."); } } - } + } + + //Check if the configuration is set to flush immediatly the response to the caller. + var options = context.GetRequiredService>(); + if (options.Value.WriteHttpResponseSynchronously) + await response.CompleteAsync(); // Complete activity. await context.CompleteActivityAsync(); @@ -144,4 +151,4 @@ public class WriteHttpResponse : Activity : content is string ? "text/plain" : "application/json"; -} \ No newline at end of file +} diff --git a/src/modules/Elsa.Http/Options/HttpActivityOptions.cs b/src/modules/Elsa.Http/Options/HttpActivityOptions.cs index 76458bcec..f34f76dea 100644 --- a/src/modules/Elsa.Http/Options/HttpActivityOptions.cs +++ b/src/modules/Elsa.Http/Options/HttpActivityOptions.cs @@ -35,5 +35,11 @@ public class HttpActivityOptions "text/html", "text/json", "text/xml", - }; + }; + + /// + /// A boolean to opt-in if you want to call CompleteAsync() in the HttpResponse Activity + /// and not waiting for the end of the HttpMiddleware. + /// + public Boolean WriteHttpResponseSynchronously { get; set; } = false; } \ No newline at end of file