【发布时间】: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