У меня есть 2 конечных точки nservicebus, и одна конечная точка пытается отправить объект команды (класса), который содержит 3 свойства: bool, List и class. Ниже приведен полный класс команд
public class StartProcess : ICommand
{
public bool CanStartProcess { get; set; }
public List<ProcessFailed> ProcessFailures { get; set; } = new List<ProcessFailed>();
public ProcessFailed ProcessFailed { get; set; }
}
. Ниже показано, как я заполняю объект, и я подтвердил, что все свойства содержат допустимые значения. Я просто упростил код:
var startProcess = new StartProcess()
{
CanStartProcess = true,
ProcessFailures = file.Body.ValidationReports,
ProcessFailed = file.Body.ValidationReport
};
Наконец, я запускаю конечную точку и пытаюсь отправить объект. , , вот где моя проблема приходит
ClaimsProcessorEndpoint.Start();
ClaimsProcessorEndpoint.EndpointInstance.Send(ConfigurationManager.AppSettings["ClaimsManager.Endpoint"], startProcess ).GetAwaiter().GetResult();
Примечание: когда я удаляю свойство списка, все работает нормально. Я получаю ниже исключения:
exception.Message => The given key was not present in the dictionary.
exception.StackTrace
at System.Collections.Concurrent.ConcurrentDictionary`2.get_Item(TKey key)
at NServiceBus.XmlSerialization.Write(XElement elem, Type t, Object obj)
at NServiceBus.XmlSerialization.WriteObject(XElement elem, String name, Type type, Object value, Boolean useNS)
at NServiceBus.XmlSerialization.WriteEntry(XElement elem, String name, Type type, Object value)
at NServiceBus.XmlSerialization.Write(XElement elem, Type t, Object obj)
at NServiceBus.XmlSerialization.WriteObject(XElement elem, String name, Type type, Object value, Boolean useNS)
at NServiceBus.XmlSerialization.WriteEntry(XElement elem, String name, Type type, Object value)
at NServiceBus.XmlSerialization.Write(XElement elem, Type t, Object obj)
at NServiceBus.XmlSerialization.WriteObject(XElement elem, String name, Type type, Object value, Boolean useNS)
at NServiceBus.XmlSerialization.Serialize()
at NServiceBus.XmlMessageSerializer.Serialize(Object message, Stream stream)
at NServiceBus.SerializeMessageConnector.Serialize(IOutgoingLogicalMessageContext context)
at NServiceBus.SerializeMessageConnector.<Invoke>d__1.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NServiceBus.UnicastSendRouterConnector.<Invoke>d__1.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
Глядя на учебник NServicebus (изображение), это не должно быть проблемой. И на обеих конечных точках я использую XmlSerializer