【发布时间】:2014-04-13 22:25:56
【问题描述】:
我创建了一个简单的 NServiceBus 端点(它现在什么都不做),当我安装它时(使用NServiceBus.Host.exe /install /displayName:"MyEndpoint"),它会作为服务安装
在本地服务下运行,并且运行良好。
现在,当我将此 Windows 服务的运行身份帐户更改为我自己的本地服务帐户时(现在我们将其称为“svcTestAccount”,它具有作为服务登录权限),服务启动,然后意外在初始化过程中中途停止。
我不知道为什么,因为没有异常记录到 log4net,进程就终止了。 我以前在以前的项目中看到过这种行为,当时端点无法访问它需要的队列,但是这次我已经配置了 5 个队列,我的端点给予“每个人”“完全控制”,所以它不应该是这样,对吧?
奇怪的是,当我运行它(在生产配置文件上使用 NServiceBus.Host.exe)时,它在以下所有情况下都可以愉快地运行:
- 在 Visual Studio 2012 中,以本地管理员身份运行。
- 作为 Windows 服务,在本地服务下运行
- 作为 Windows 服务,在 Network Service 下运行
- 如果 svcTestAccount 是本地管理员组的成员,则作为 Windows 服务在 svcTestAccount 下运行。
- 从在 svcTestAccount 下运行的命令提示符(即“runas /user:svcTestAccount cmd”打开命令提示符,然后通过 NServiceBus.Host.exe 运行我的端点)
唯一不起作用的是让它在 svcTestAccount 下作为 Windows 服务运行(并且不是本地管理员组的成员)。
谁能告诉我这是怎么回事?
为了完整起见,我的端点仅包含:
public class EndpointConfig : IConfigureThisEndpoint, AsA_Publisher, IWantCustomInitialization
{
public void Init()
{
Configure.With()
.DefaultBuilder()
.Log4Net();
}
}
还有我的 web.config:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<configuration>
<configSections>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
</configSections>
<UnicastBusConfig>
<MessageEndpointMappings>
</MessageEndpointMappings>
</UnicastBusConfig>
</configuration>
我在 Windows Server 2012 上使用 NServiceBus 4.3.0。
【问题讨论】:
-
svcTestAccount 帐户是否有权写入运行服务的文件夹? log4net可能无法创建日志文件
标签: c# msmq nservicebus windows-server-2012