diff --git a/src/modules/Elsa.Http/Handlers/ValidateWorkflowRequestHandler.cs b/src/modules/Elsa.Http/Handlers/ValidateWorkflowRequestHandler.cs index 2d50330c2..bd29eadf5 100644 --- a/src/modules/Elsa.Http/Handlers/ValidateWorkflowRequestHandler.cs +++ b/src/modules/Elsa.Http/Handlers/ValidateWorkflowRequestHandler.cs @@ -17,7 +17,7 @@ public class ValidateWorkflowRequestHandler : IRequestHandler /// Constructor. /// @@ -33,23 +33,27 @@ public class ValidateWorkflowRequestHandler : IRequestHandler x.Payload is HttpEndpointBookmarkPayload).ToList(); var publishedWorkflowsTriggers = (await _triggerStore.FindManyAsync(new TriggerFilter { Name = ActivityTypeNameHelper.GenerateTypeName(typeof(HttpEndpoint)) }, cancellationToken)).ToList(); - var validationErrors = new List(); - + var validationErrors = new List(); + foreach (var httpEndpointTrigger in httpEndpointTriggers) { - var path = httpEndpointTrigger.GetPayload().Path; - + var triggerPayload = httpEndpointTrigger.GetPayload(); + var otherWorkflowsWithSamePath = publishedWorkflowsTriggers - .Where(x => x.WorkflowDefinitionId != workflow.Identity.DefinitionId && x.Payload is HttpEndpointBookmarkPayload payload && payload.Path == path) + .Where(x => + x.WorkflowDefinitionId != workflow.Identity.DefinitionId && + x.Payload is HttpEndpointBookmarkPayload payload && + payload.Path == triggerPayload.Path && + payload.Method == triggerPayload.Method) .ToList(); - if (!otherWorkflowsWithSamePath.Any()) + if (!otherWorkflowsWithSamePath.Any()) continue; - - var message = $"The following path is already in use by another workflow: {path}"; + + var message = $"The {triggerPayload.Path} path and {triggerPayload.Method} method are already in use by another workflow!"; validationErrors.Add(new WorkflowValidationError(message, httpEndpointTrigger.ActivityId)); } - + return new ValidateWorkflowResponse(validationErrors); } } \ No newline at end of file