我有一个简单的类,它为遗留的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();
}
}
}
答案 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 ...”