2012-03-13 2 views
2

Я только модернизировал от NSB 2.6 до 3.0, и у меня проблема с NSB выбрасывания ArgumentNullException при повышении транспортного сообщения:NServiceBus олицетворения вопрос после обновления с 2.6 до 3.0

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) 

Сценарий представляет собой веб-приложение, которое отправляет сообщение конечной точке, находящейся в настоящее время на консоли (но будет работать как служба Windows).

Конфигурация для веб-приложения:

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

Конечной использует профиль производства и имеет следующую конфигурацию:

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

Как вы можете видеть, олицетворения выключен как в веб-приложение а также в конечной точке (до обновления я не настраивал олицетворение на конечной точке), но все же NSB пытается олицетворять и терпеть неудачу, потому что WinIdName является нулевым в заголовке сообщения.

Проблема в том, почему NSB пытается олицетворять себя, когда он настроен не делать этого, и что изменилось с момента выхода 2.6 из-за внезапного сбоя?

EDIT: Поскольку я исследую далее, похоже, что он пытается олицетворять пользователя веб-приложения при отправке сообщения в конечную точку, даже если он настроен не делать этого.

+0

Я думаю, что это migt быть ошибка. Похоже на ту же проблему, что и этот парень? Http: //tech.groups.yahoo.com/group/nservicebus/message/13140 –

+0

Да, похоже. Любая идея о том, когда вы можете исправить это? – thedersen

+0

Вы используете какие-либо встроенные роли? (As_aServer) Если это попытка удалить его и посмотреть, помогает ли это? –

ответ

2

Это 2 проблемы. Во-первых, мы взорваемся, если по какой-то причине личность является нулевой.

Сейчас эта проблема решена (будет развернута в NSB 3.0.1)

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

Другой является то, что роль As_aServer перекрывает ImpersonateSender (ложный). Это большее изменение. Чтобы обойти эту проблему, чтобы не использовать роль и просто те же настройки вручную:

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

Смежные вопросы