【问题标题】:NServiceBus impersonation issue after upgrading from 2.6 to 3.0从 2.6 升级到 3.0 后的 NServiceBus 模拟问题
【发布时间】:2012-03-17 01:03:16
【问题描述】:

我刚刚从 NSB 2.6 升级到 3.0,但在引发传输消息时遇到了 NSB 抛出 ArgumentNullException 的问题:

NServiceBus.Unicast.Transport.Transactional.TransactionalTransport [(null)] <(null)> - 
Failed raising 'transport message received' event for message with ID=21d502f4-0e66-4d1e-801c10ddc1cbe40a\34416
        System.ArgumentNullException: Value cannot be null.
        Parameter name: name
           at System.Security.Principal.GenericIdentity..ctor(String name)
           at NServiceBus.Impersonation.ImpersonationManager.Transport_TransportMessageReceived(Object sender, TransportMessageReceivedEventArgs e)
           at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
           at NServiceBus.Unicast.Transport.Transactional.TransactionalTransport.OnTransportMessageReceived(TransportMessage msg)

该场景是一个 Web 应用程序,它向当前托管在控制台中的端点发送消息(但将作为 Windows 服务运行)。

网络应用的配置:

Configure.WithWeb()
    .Log4Net()
    .DefaultBuilder()
    .XmlSerializer()                                    
    .MsmqTransport()
        .IsTransactional(false)
        .PurgeOnStartup(false)
    .UnicastBus()
        .ImpersonateSender(false)
        .CreateBus()
    .Start();

端点使用生产配置文件并具有以下配置:

   Configure.With()
        .StructureMapBuilder()
        .Sagas()
        .RunTimeoutManager()
        .UnicastBus()
           .ImpersonateSender(false)

如您所见,模拟在 Web 应用程序和端点中均已关闭(在升级之前,我没有在端点上配置模拟),但 NSB 仍在尝试模拟,但失败了因为消息头中的 WinIdName 为空。

问题是,为什么 NSB 在配置为不这样做时试图模拟,以及自 2.6 以来发生了什么变化导致它突然失败?

编辑:当我进一步调查时,它似乎在向端点发送消息时试图冒充网络应用的用户,即使它被配置为不这样做。

【问题讨论】:

  • 我认为这可能是一个错误。听起来和这家伙一样的问题?tech.groups.yahoo.com/group/nservicebus/message/13140
  • 是的,看起来像。知道什么时候可以修复它吗?
  • 您是否使用了任何内置角色? (As_aServer) 如果是,请尝试将其删除,看看是否有帮助?

标签: .net nservicebus


【解决方案1】:

这是 2 个问题。一个是如果身份由于某种原因为空,我们就会崩溃。

此问题现已修复(将在 NSB 3.0.1 中推出)

https://github.com/NServiceBus/NServiceBus/commit/eaaafecbbedc7c82d996ce466434038d70bc27cd

另一个是角色 As_aServer 覆盖了 ImpersonateSender(false)。这是一个更大的变化。解决方法是不使用该角色,只需手动配置相同的设置:

https://github.com/NServiceBus/NServiceBus/blob/master/src/hosting/NServiceBus.Hosting.Windows/Roles/Handlers/ServerRoleHandler.cs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-30
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2013-02-22
    • 2012-08-11
    相关资源
    最近更新 更多