NServicebus添加到旧版Windows服务

时间:2010-08-31 09:16:35

标签: c# .net nservicebus

我有一个简单的类,它为遗留的Windows服务设置NserviceBus。服务启动时会调用此配置。当我将应用程序作为控制台应用程序运行时,App.config中的配置被选中,但是当作为Windows服务运行应用程序时,不会选择App.config配置。有什么办法可以指定应用配置位置吗? (正如我对log4net.config所做的那样)。

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();
        }
    }
}

2 个答案:

答案 0 :(得分:2)

解决此问题的一种方法是实现自己的自定义配置源:

http://sourceforge.net/apps/mediawiki/nservicebus/index.php?title=Overriding_Configuration

答案 1 :(得分:1)

我可以证实我错了。从App.config中获取配置。经过以下日志验证:

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

似乎structuremap配置确实在当前域目录中查找配置,而不是我对默认服务目录的初步想法:“c:\ Windows \ system32 ...”