diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprEventsController.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprEventsController.cs index 60d9602cc1..2907037db2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprEventsController.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr.EventBus/Volo/Abp/AspNetCore/Mvc/Dapr/EventBus/Controllers/AbpAspNetCoreMvcDaprEventsController.cs @@ -34,7 +34,7 @@ public class AbpAspNetCoreMvcDaprEventsController : AbpController var distributedEventBus = HttpContext.RequestServices.GetRequiredService(); - if (data.Contains("Data") && data.Contains("CorrelationId")) //TODO: Check the json with JSON Schema. + if (IsAbpDaprEventData(data)) { var abpDaprEventData = daprSerializer.Deserialize(data, typeof(AbpDaprEventData<>).MakeGenericType(distributedEventBus.GetEventType(topic))); var eventData = abpDaprEventData.GetType().GetProperties().First(x => x.Name == "Data").GetValue(abpDaprEventData); @@ -48,4 +48,13 @@ public class AbpAspNetCoreMvcDaprEventsController : AbpController } return Ok(); } + + protected virtual bool IsAbpDaprEventData(string data) + { + var document = JsonDocument.Parse(data); + var objects = document.RootElement.EnumerateObject().ToList(); + return objects.Count == 2 && + objects.Any(x => x.Name.Equals("correlationId", StringComparison.CurrentCultureIgnoreCase)) && + objects.Any(x => x.Name.Equals("data", StringComparison.CurrentCultureIgnoreCase)); + } }