Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NServicebus已添加到旧版windows服务_C#_.net_Nservicebus - Fatal编程技术网

C# NServicebus已添加到旧版windows服务

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

我有一个简单的类,它为遗留的windows服务设置NserviceBus。此配置在服务启动时调用。当我将应用程序作为控制台应用程序运行时,会拾取app.config中的配置,但是当将应用程序作为windows服务运行时,不会拾取app.config配置。有没有办法指定应用程序配置位置?(正如我对log4net.config所做的那样)

名称空间上传接口
{
公共静态类引导程序
{
公共静态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);