Azure 在NServiceBus中接收消息反序列化异常

Azure 在NServiceBus中接收消息反序列化异常,azure,nservicebus,nservicebus5,Azure,Nservicebus,Nservicebus5,我刚刚使用NServiceBus进行了重新熟悉,我收到了MessageDeserialization异常和堆栈跟踪,如下所示 关于一些环境信息。。。我正在将azure持久性与队列一起使用。我可以看到订阅表以及订阅服务器的所有端点地址 我有3个MVC Web API托管的应用程序。发布导致此异常的消息的服务/API在其app.config中配置为订阅自身和其他2个API。其他似乎没有问题的用户只有1个订阅。第一个订阅它自己的一个事件。另一个订阅来自第三个服务/api的3个事件 为了解决这个问题我试

我刚刚使用NServiceBus进行了重新熟悉,我收到了MessageDeserialization异常和堆栈跟踪,如下所示

关于一些环境信息。。。我正在将azure持久性与队列一起使用。我可以看到订阅表以及订阅服务器的所有端点地址

我有3个MVC Web API托管的应用程序。发布导致此异常的消息的服务/API在其app.config中配置为订阅自身和其他2个API。其他似乎没有问题的用户只有1个订阅。第一个订阅它自己的一个事件。另一个订阅来自第三个服务/api的3个事件

为了解决这个问题我试过的方法。我使用约定来定义我的事件,但现在我的事件消息都实现了IEvent。我还定义了JsonSerializer。这是我的总线配置设置

public class NServiceBusEndpointConfig : IConfigureThisEndpoint, AsA_Worker
{
    public static IBus bus;

    public void Customize(BusConfiguration busConfig)
    {
        var configuration = ContainerConfig.Container.Resolve<ICredentialDomainConfig>();

        busConfig.AzureConfigurationSource();
        busConfig.UseTransport<AzureStorageQueueTransport>()
            .ConnectionString(configuration.NServiceBusQueueConnectionString);
        busConfig.UsePersistence<AzureStoragePersistence>();
        busConfig.EndpointName("service1");

        busConfig.UseContainer<AutofacBuilder>(c => c.ExistingLifetimeScope(ContainerConfig.Container));
        busConfig.UseSerialization<JsonSerializer>();  
        busConfig.License(configuration.NServiceBusLicenseString);
    }
}
8dea1c2f-babb-438d-8e4c-a4cd002f5ab6“, “NServiceBus.ExceptionInfo.Source”:“NServiceBus.Core”, “NServiceBus.ExceptionInfo.StackTrace”:“NServiceBus.MessageDeserializationException:运行时出错 正在尝试从传输消息中提取逻辑消息 8dea1c2f-babb-438d-8e4c-a4cd002f5ab6-->系统。异常:无法 查找“Newtonsoft.Json.Linq.JObject”的元数据。\r\n请确保 以下内容:\r\n1'Newtonsoft.Json.Linq.JObject'包含在初始 扫描\r\n2.“Newtonsoft.Json.Linq.JObject'实现 “IMessage”、“IEvent”或“ICommand”,或者,如果您不想 若要实现接口,可以使用“不引人注目模式”。\r\n在 NServiceBus.Unicast.Messages.LogicalMessageFactory.Create(类型 消息类型,对象消息,字典
2头)
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Messages\\LogicalMessageFactory.cs:line
59\r\n在
System.Linq.Enumerable。其中选择ArrayInterator
2.MoveNext()\r\n位于 System.Collections.Generic.List
1..ctor(IEnumerable
1集合)\r\n 在System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source)\r\n
在 NServiceBus.DeserializeLogicalMessagesBehavior.Extract(TransportMessage (物理信息) c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Messages\\DeserializeLogicalMessagesBehavior.cs:line 93\r\n在 NServiceBus.DeserializeLogicalMessagesBehavior.Invoke(IncomingContext 上下文,下一步行动)在 c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Messages\\DeserializeLogicalMessagesBehavior.cs:line 40\r\n---内部异常堆栈跟踪的结束---\r\n在 NServiceBus.DeserializeLogicalMessagesBehavior.Invoke(IncomingContext 上下文,下一步行动)在 c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Messages\\DeserializeLogicalMessagesBehavior.cs:line 47\r\n位于中的NServiceBus.BehaviorChain
1.InvokeNext(T上下文) c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107\r\n在 NServiceBus.BehaviorChain
1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n在
NServiceBus.ApplyIncomingTransportMessageMutatorsBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\MessageMutator\\ApplyIncomingTransportMessageMutatorsBehavior.cs:line
20\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain
1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n在
NServiceBus.SubscriptionReceiverBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Subscriptions\\MessageDrivenSubscriptions\\SubscriptionReceiverBehavior.cs:line
32\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain
1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n位于NServiceBus.UnitOfWorkBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\UnitOfWork\\UnitOfWorkBehavior.cs:line
42\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain
1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n位于NServiceBus.ChildContainerBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Unicast\\Behaviors\\ChildContainerBehavior.cs:line
17\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain
1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n在
NServiceBus.ProcessingStatisticsBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Monitoring\\ProcessingStatisticsBehavior.cs:line
23\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
N服务总线行为链"NServiceBus.ExceptionInfo.ExceptionType": "NServiceBus.MessageDeserializationException",
      "NServiceBus.ExceptionInfo.InnerExceptionType": "System.Exception",
      "NServiceBus.ExceptionInfo.HelpLink": null,
      "NServiceBus.ExceptionInfo.Message": "An error occurred while attempting to extract logical messages from transport message
      "NServiceBus.FailedQ": "<<Queue,
      "NServiceBus.TimeOfFailure": "2015-07-06 02:52:26:254996 Z"
  public class CredentialPermissionGrantedEvent : IEvent
    {
        public PermissionInfo Permission { get; set; }
    }    

public class PermissionInfo
    {
        public Guid PermissionReference { get; set; }
        public DateTime ActivationDate { get; set; }
        public Guid CredentialReference { get; set; }
        public Guid DeviceReference { get; set; }
        public DateTime ExpirationDate { get; set; }
        public string Function { get; set; }
        public Guid ScheduleReference { get; set; }
        public long Timestamp { get; set; }
    }