在NServiceBus中将通用主机安装为服务时,如何提供有效凭据?

时间:2009-09-28 15:48:28

标签: nservicebus topshelf

想象一下,我在以下目录中创建了一个.bat文件:

\树干\样品\ PubSub的\

@ECHO OFF
ECHO installing Subscriber 1
Subscriber1\bin\Debug\NServiceBus.Host.exe /install
pause
ECHO installing Subscriber 2
Subscriber2\bin\Debug\NServiceBus.Host.exe  /install
pause
ECHO starting Subscriber services
net start Subscriber1.EndPointConfig_v1.0.0.0
net start Subscriber2.EndPointConfig_v1.0.0.0
pause

我收到提示输入用户名和密码,但是使用我自己的凭据我得到一个例外,如下所示:

  

安装阶段发生异常。   System.ComponentModel.Win32Exception:帐户名称无效或不是ex   ist,或者密码对于指定的帐户名称无效

  1. 我可以通过哪些凭据来实现此目的?

  2. 我可以将凭据配置为NServiceBus.Host.exe的命令行参数,还是作为“本地系统帐户”运行?

  3. 注意:

    到目前为止,我的研究表明(2)可能是TopShelf通过它的IInstallationConfiguration支持的东西

    我在安装了MSMQ的Vista机器上这样做。

    如果我只是将订阅者实例作为控制台应用程序运行(例如,这样),PubSub示例将按预期运行:

    @ECHO OFF
    ECHO starting Subscriber 1
    Subscriber1\bin\Debug\NServiceBus.Host.exe NServiceBus.Integration
    pause
    

2 个答案:

答案 0 :(得分:4)

  

(2。)我可以将凭据配置为NServiceBus.Host.exe的命令行参数,还是作为“本地系统帐户”运行?

在深入了解TopShelf和NSB源代码后,我发现这非常简单:

对于任何感兴趣的人 - 这是TopShelf用IRunnerConfigurator实现的东西.RunAsLocalSystem。如果添加标记接口ISpecify.ToRunAsLocalSystem

,NServiceBus会调用此方法

所以答案是将ISpecify.ToRunAsLocalSystem添加到EndpointConfig类实现的接口列表中。

我找不到答案:

  

(1。)我可以传递哪些凭据才能使其正常工作?

但是现在我真的不需要一个,因为我很高兴能够以本地系统的形式运行服务。

答案 1 :(得分:0)

我不确定这是否相关,但Matt Burton最近添加了以下提交:

我还没试过,但我的问题(1)现在可能无关紧要了。