代码之家  ›  专栏  ›  技术社区  ›  Bob The Janitor

Win服务获取对消息队列的权限被拒绝

  •  12
  • Bob The Janitor  · 技术社区  · 14 年前

    我有一个WinService无法启动,因为NServiceBus抛出“服务无法启动”。System.Messaging.MessageQueueException异常(0x80004005):拒绝访问消息队列系统。“

    我试着运行服务:LocalSystem、Localservice和NetworkService

     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="InputQueue@newimp001" />
        </MessageEndpointMappings>
      </UnicastBusConfig>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
    </configuration>
    
    1 回复  |  直到 12 年前
        1
  •  31
  •   Bob The Janitor    14 年前

    这是因为服务包含在网络服务用户中。 要做到这一点

    1. 开放式计算机管理
    2. 展开专用队列
    3. 选择“安全”选项卡并设置本地用户的权限