Je cours le RTM 2.0 de NServiceBus et j'obtiens une exception NullReferenceException lorsque mon MessageModule lie le CurrentSessionContext à mon sessionfactory NHibernate.NullReferenceException lors de l'initialisation de NServiceBus dans l'application Web Méthode Application_Start
à partir de mon Application_Start, j'appelle la méthode suivante:
public static void WithWeb(IUnityContainer container)
{
log4net.Config.XmlConfigurator.Configure();
var childContainer = container.CreateChildContainer();
childContainer.RegisterInstance<ISessionFactory>(NHibernateSession.SessionFactory);
var bus = NServiceBus.Configure.WithWeb()
.UnityBuilder(childContainer)
.Log4Net()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.LoadMessageHandlers()
.CreateBus();
var activeBus = bus.Start();
container.RegisterInstance(typeof(IBus), activeBus);
}
Lorsque le bus est démarré, mon module de message commence par ce qui suit:
public void HandleBeginMessage()
{
try
{
CurrentSessionContext.Bind(_sessionFactory.OpenSession());
}
catch (Exception e)
{
_log.Error("Error occurred in HandleBeginMessage of NHibernateMessageModule", e);
throw;
}
}
En regardant mon journal, nous consigner l'erreur suivante lorsque la méthode bind est appelée:
System.NullReferenceException: Object reference not set to an instance of an object.
at NHibernate.Context.WebSessionContext.GetMap()
at NHibernate.Context.MapBasedSessionContext.set_Session(ISession value)
at NHibernate.Context.CurrentSessionContext.Bind(ISession session)
Apparemment, Il y a un problème avec l'accès au HttpContext. Est-ce que cet appel à configurer NServiceBus doit se produire plus tard dans le cycle de vie que Application_Start? Ou existe-t-il une autre solution de contournement que d'autres ont utilisée pour faire fonctionner les gestionnaires dans une application Web Asp.NET?
Merci, Steve
Merci Mauricio, je vais tenter le coup. – SteveBering
@SteveBering: Je parie que quelqu'un a déjà mis en œuvre ce que je décris –
@MauricioScheffer: [Oui il y a] (http://stackoverflow.com/a/5871088/163507). – Rolf