编程语言
首页 > 编程语言> > c#-使用JSON时,NServiceBus处理程序出现空消息

c#-使用JSON时,NServiceBus处理程序出现空消息

作者:互联网

我遇到了NServiceBus 4.4.2的问题,这让我感到很沮丧.我将自己的NSB托管在MVC应用程序中.将该实例放入Autofac容器中,并注入到控制器中.到现在为止还挺好.

使用SendLocal(命令)发送消息的工作正常.该消息在JSON的MSMQ中显示,因为我已配置了NSB.

现在,我的消息处理程序被调用,这也是我的MVC应用程序的一部分.为简单起见,我现在不向此处理程序中注入任何内容.在任何情况下,显示的消息都是空的(例如,属性为null或Guid.Empty).

当我将NSB的序列化更改为XML时,它可以工作.看起来,好像同一实例使用JSON进行序列化而使用XML进行反序列化一样.

这是我用来初始化总线的代码:

        Configure.Transactions.Enable();
        Configure.Serialization.Json();
        Configure.Features.Disable<Sagas>();
        Feature.Disable<XmlSerialization>();

        Instance =
            Configure.With(
                AllAssemblies.Matching("Messages1.dll").And("Handler1.dll").And("Messages2.dll").And("Handler2.dll"))
                .DefineEndpointName(ConfigurationManager.AppSettings["ServiceBusEndpointName"])
                .DefaultBuilder()
                .Log4Net<RollingFileAppender>(x => x.File = ConfigurationManager.AppSettings["ServiceBusLog"])
                .RavenSubscriptionStorage()
                .UseTransport<Msmq>()
                .PurgeOnStartup(false)
                .UnicastBus()
                .RunHandlersUnderIncomingPrincipal(false)
                .CreateBus()
                .Start(() => Configure.Instance.ForInstallationOn<Windows>()
                    .Install());

如果不知道这是怎么回事:-(有人知道吗?

亲切的问候
马可·海涅

解决方法:

感谢您的所有帮助,

但是通常,错误出在椅子和键盘之间:-/

是的,我的所有观察结果似乎都是正确的,但是出于所有错误的原因.问题很简单:我的消息类没有无参数的构造函数,只有私有的setter.看起来,尽管XML-Serializer对此没有问题,但JSON序列化器却有问题.

使属性get / setters公开后,我终于得到了消息.笨蛋

特别感谢Particular,他竭尽全力帮助我.我想,我需要休息几天=)

标签:xml,json,c,nservicebus
来源: https://codeday.me/bug/20191029/1962788.html