diff --git a/src/modules/Elsa.Http/Activities/HttpEndpoint.cs b/src/modules/Elsa.Http/Activities/HttpEndpoint.cs index 978ff6c83..ed94e5e90 100644 --- a/src/modules/Elsa.Http/Activities/HttpEndpoint.cs +++ b/src/modules/Elsa.Http/Activities/HttpEndpoint.cs @@ -166,7 +166,7 @@ public class HttpEndpoint : Trigger if (!context.IsTriggerOfWorkflow()) { - context.CreateBookmarks(GetBookmarkPayloads(context.ExpressionExecutionContext), includeActivityInstanceId: false); + context.CreateBookmarks(GetBookmarkPayloads(context.ExpressionExecutionContext), includeActivityInstanceId: false, callback: OnResumeAsync); return; } @@ -191,8 +191,10 @@ public class HttpEndpoint : Trigger if (httpContext == null) { - // We're not in an HTTP context, so let's fail. - throw new Exception("Cannot execute in a non-HTTP context"); + // We're executing in a non-HTTP context (e.g. in a virtual actor). + // Create a bookmark to allow the invoker to export the state and resume execution from there. + context.CreateBookmark(OnResumeAsync, BookmarkMetadata.HttpCrossBoundary); + return; } await HandleRequestAsync(context, httpContext);