2010-08-31 9 views
2

J'ai une classe simple qui configure NserviceBus pour un service Windows hérité. Cette configuration est appelée lorsque le service démarre. Lorsque j'exécute l'application en tant qu'application console, la configuration dans App.config est détectée, mais lors de l'exécution de l'application en tant que service Windows, la configuration App.config n'est pas détectée. Est-il possible de spécifier l'emplacement de la configuration de l'application? (comme je l'ai fait avec le fichier log4net.config).NServicebus ajouté au service Windows hérité

namespace MossSapUploadInterface 
{ 
    public static class BootStrapper 
    { 
     public static void Init() 
     { 
      var config = AppDomain.CurrentDomain.BaseDirectory + "log4net.config"; 
      XmlConfigurator.Configure(new FileInfo(config)); 
      var log = LogManager.GetLogger(typeof(BootStrapper)); 
      ObjectFactory.Initialize(x => x.AddRegistry<MessageServiceRegistry>()); 
      ObjectFactory.Configure(x => x.For<ILog>().TheDefault.Is.Object(log)); 


      var bus = Configure.With() 
       .StructureMapBuilder(ObjectFactory.Container) 
       .MsmqTransport() 
       .IsTransactional(true) 
       .UnicastBus() 
       .ImpersonateSender(false) 
       .XmlSerializer() 
       .CreateBus() 
       .Start(); 
      SetLoggingLibrary.Log4Net(); 
     } 
    } 
} 

Répondre

1

Je peux confirmer que j'avais tort. La configuration est récupérée à partir de App.config. Attesté par le journal suivant:

var destinationQueue = Configure.ConfigurationSource.GetConfiguration<UnicastBusConfig>().MessageEndpointMappings[0].Endpoint; 
log.Info("Endpoint Mapped to: " + destinationQueue); 

Semble la configuration StructureMap ne regarde dans le répertoire de domaine en cours pour la configuration, par opposition à mes premières pensées du répertoire des services par défaut: « c: \ Windows \ system32 ... "