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

时间:2014-03-10 17:04:00

标签: c# msmq nservicebus windows-server-2012

我创建了一个简单的NServiceBus端点(暂时不做任何事情),当我安装它时(使用NServiceBus.Host.exe /install /displayName:"MyEndpoint"),它作为服务安装 在本地服务下运行,它运行良好。

现在,当我将此Windows服务的运行方式帐户更改为我自己的本地服务帐户(暂时将其称为“svcTestAccount”,它将Logon作为服务权限)时,服务启动,然后意外地启动在初始化期间中途停止

我不明白为什么,因为没有异常记录到log4net,该过程才会终止。 我在之前的项目中看到过这种行为,当端点无法访问它所需的队列时,但这次我配置了5个队列,我的端点给了“Everyone”“完全控制”,所以它不应该是的,对吗?

奇怪的是,当我运行它(使用生产配置文件中的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();
    }
}

我的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。

1 个答案:

答案 0 :(得分:3)

要将NServiceBus主机作为其他帐户(而非本地系统)运行,您需要使用/username/password执行安装程序,例如:

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

有关详细信息,请参阅http://docs.particular.net/NServiceBus/the-nservicebus-host#installation