diff --git a/src/bundles/Elsa.WorkflowServer.Web/Elsa.WorkflowServer.Web.csproj b/src/bundles/Elsa.WorkflowServer.Web/Elsa.WorkflowServer.Web.csproj index 3b7f9221c..7fdce50a3 100644 --- a/src/bundles/Elsa.WorkflowServer.Web/Elsa.WorkflowServer.Web.csproj +++ b/src/bundles/Elsa.WorkflowServer.Web/Elsa.WorkflowServer.Web.csproj @@ -40,10 +40,5 @@ - - - - - - + diff --git a/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ConnectionComparer.cs b/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ConnectionComparer.cs index bb01e9adc..99a9af17e 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ConnectionComparer.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ConnectionComparer.cs @@ -14,6 +14,13 @@ public class ConnectionComparer : IEqualityComparer if (ReferenceEquals(x, null)) return false; if (ReferenceEquals(y, null)) return false; if (x.GetType() != y.GetType()) return false; + + // ReSharper disable ConditionalAccessQualifierIsNonNullableAccordingToAPIContract + // Justification: These can be null when the designer is in an invalid state. For example, if a NotFoundActivity is used that no longer has the same outcomes. + if (x.Source.Activity?.Id == null || x.Target.Activity?.Id == null || y.Source.Activity?.Id == null || y.Target.Activity?.Id == null) + return false; + // ReSharper restore ConditionalAccessQualifierIsNonNullableAccordingToAPIContract + return x.Source.Activity.Id.Equals(y.Source.Activity.Id) && x.Target.Activity.Id.Equals(y.Target.Activity.Id) && x.Source.Port == y.Source.Port && x.Target.Port == y.Target.Port; }