无法让NServiceBus在自定义服务帐户下运行
本文关键字:运行 服务 自定义 NServiceBus | 更新日期: 2023-09-27 17:49:14
我已经创建了一个基本的NServiceBus端点(它现在不做任何事情),当我安装它(使用NServiceBus.Host.exe /install /displayName:"MyEndpoint"
)时,它被安装为一个服务它在本地服务下运行,并且工作得很好。
现在,当我将此Windows服务的Run作为帐户更改为我自己的本地服务帐户时(现在让它称为"svcTestAccount",它具有Logon作为服务权限),服务启动并然后在初始化期间意外停止。
我不知道为什么,因为没有异常记录到log4net,进程就终止了。在之前的一个项目中,当端点无法访问所需的队列时,我已经看到了这种行为,但这次我配置了5个队列,我的端点给"每个人"完全控制",所以它不应该是这样的,对吧?
奇怪的是,当我运行它时(在生产配置文件上使用NServiceBus.Host.exe),它在以下所有情况下都愉快地运行:
- 从Visual Studio 2012中,作为本地管理员运行。
- 作为windows服务,在本地服务 下运行
- 作为windows服务,运行在网络服务 下
- 作为windows服务,在svcTestAccount下运行,如果svcTestAccount是本地Administrators组的成员。
- 从svcTestAccount下运行的命令提示符(即"runas/user:svcTestAccount cmd"打开命令提示符,然后NServiceBus.Host.exe运行我的端点)
唯一不工作的是让它在svcTestAccount下作为Windows服务运行(而不是本地Administrators组的成员)。
谁能告诉我发生了什么事?为了完整起见,我的端点只包含:
public class EndpointConfig : IConfigureThisEndpoint, AsA_Publisher, IWantCustomInitialization
{
public void Init()
{
Configure.With()
.DefaultBuilder()
.Log4Net();
}
}
And my 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。
要以不同的帐户(不是Local System)运行NServiceBus host,您需要使用/username
和/password
执行安装程序,例如:
NServiceBus.Host.exe /install /displayName:"MyEndpoint" /username:"mydomain'username" /password:"mysecretpassword"