C# NServicebus已添加到旧版windows服务
我有一个简单的类,它为遗留的windows服务设置NserviceBus。此配置在服务启动时调用。当我将应用程序作为控制台应用程序运行时,会拾取app.config中的配置,但是当将应用程序作为windows服务运行时,不会拾取app.config配置。有没有办法指定应用程序配置位置?(正如我对log4net.config所做的那样)C# NServicebus已添加到旧版windows服务,c#,.net,nservicebus,C#,.net,Nservicebus,我有一个简单的类,它为遗留的windows服务设置NserviceBus。此配置在服务启动时调用。当我将应用程序作为控制台应用程序运行时,会拾取app.config中的配置,但是当将应用程序作为windows服务运行时,不会拾取app.config配置。有没有办法指定应用程序配置位置?(正如我对log4net.config所做的那样) 名称空间上传接口 { 公共静态类引导程序 { 公共静态void Init() { var config=AppDomain.CurrentDomain.BaseD
名称空间上传接口
{
公共静态类引导程序
{
公共静态void Init()
{
var config=AppDomain.CurrentDomain.BaseDirectory+“log4net.config”;
Configure(新文件信息(config));
var log=LogManager.GetLogger(typeof(BootStrapper));
初始化(x=>x.AddRegistry());
Configure(x=>x.For().TheDefault.Is.Object(log));
var bus=Configure.With()
.StructureMapBuilder(ObjectFactory.Container)
.MsmqTransport()
.IsTransaction(真)
.UnicastBus()
.ImpersonateSender(错误)
.XmlSerializer()
.CreateBus()
.Start();
SetLoggingLibrary.Log4Net();
}
}
}
解决此问题的一种方法是实现您自己的自定义配置源:
我可以确认我错了。配置是从App.config获取的。经以下日志验证:
var destinationQueue = Configure.ConfigurationSource.GetConfiguration<UnicastBusConfig>().MessageEndpointMappings[0].Endpoint;
log.Info("Endpoint Mapped to: " + destinationQueue);
var destinationQueue=Configure.ConfigurationSource.GetConfiguration().MessageEndpointMappings[0]。端点;
log.Info(“映射到:“+destinationQueue”的端点);
似乎structuremap配置确实在当前域目录中查找配置,而不是我最初想到的默认服务目录:“c:\Windows\system32…”
var destinationQueue = Configure.ConfigurationSource.GetConfiguration<UnicastBusConfig>().MessageEndpointMappings[0].Endpoint;
log.Info("Endpoint Mapped to: " + destinationQueue);