无法让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。

无法让NServiceBus在自定义服务帐户下运行

要以不同的帐户(不是Local System)运行NServiceBus host,您需要使用/username/password执行安装程序,例如:

NServiceBus.Host.exe /install /displayName:"MyEndpoint" /username:"mydomain'username" /password:"mysecretpassword"