2010-09-16 76 views
12

我有一个WinService无法启动,因为NServiceBus引发“服务无法启动System.Messaging.MessageQueueException(0x80004005):访问消息队列系统被拒绝”。Win服务获取权限被拒绝给消息队列

这是Windows 7

我试图为运行服务:本地系统,本地服务,网络服务和

这里是如何我设置了NServiceBus

private static IBus _serviceBus; 
    private static AuditMessageHandler _messageHandler; 

    public AuditQueueProcessor() 
    { 
     _messageHandler = new AuditMessageHandler(); 
     _serviceBus = Configure.With() 
      .Log4Net() 
      .DefaultBuilder() 
      .XmlSerializer() 
      .MsmqTransport() 
      .IsTransactional(true) 
      .PurgeOnStartup(false) 
      .UnicastBus() 
      .ImpersonateSender(false) 
      .LoadMessageHandlers() 
      .CreateBus() 
      .Start(); 
    } 

这里我的配置

<configuration> 
    <configSections> 
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/> 

    </configSections> 

    <MsmqTransportConfig InputQueue="LoggerInputQueue" ErrorQueue="LoggerInputError" NumberOfWorkerThreads="1" MaxRetries="5"/> 

    <UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="Truckstop2.Imports.Objects.AuditMessage,Truckstop2.Imports.Objects" Endpoint="[email protected]" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> 
</configuration> 
+1

美国呃将需要偷看,接收,获取属性等。可能有助于使用相同的凭据运行MSMQ。 – 2010-09-17 02:16:06

回答

31

找到解决方案!

这是因为服务纳入网络服务用户。 您需要设置permisions私人MSMQ您访问 做到这一点

  1. 打开计算机管理
  2. 展开队列
  3. 展开专用队列
  4. 右键单击该队列的使用和选择属性
  5. 选择安全选项卡,并设置权限为你的本地用户