2010-02-22 57 views
2

几个月后,我终于回到使用nservicebus并开始在服务器上测试它。不幸的是我得到这个例外在nservicebus中创建队列时出错

The queue does not exist or you do not have sufficient permissions to perform the operation. 

我使用计算机检查经理和队列确实存在,我已授予每个人在排队但这个问题仍然存在完全的控制。我究竟做错了什么?

我使用

var bus = NServiceBus.Configure.With() 
        .SpringBuilder() 
        .XmlSerializer() 
        .MsmqTransport() 
         .IsTransactional(true) 
         .PurgeOnStartup(false) 
        .UnicastBus() 
         .ImpersonateSender(false) 
         .LoadMessageHandlers() 
        .CreateBus() 
       .Start(); 

<MsmqTransportConfig 
    InputQueue="ListenQueue" 
    ErrorQueue="error" 
    NumberOfWorkerThreads="1" 
    MaxRetries="5" 
    /> 

我工作得很好我的开发框。完整的堆栈跟踪(这似乎不那么有用)看起来像

System.Messaging.MessageQueueException was unhandled 
    Message=The queue does not exist or you do not have sufficient permissions to perform the operation. 
    Source=NServiceListener 
    ErrorCode=-2147467259 
    StackTrace: 
     at NServiceListener.Program.Main(String[] args) in C:\temp\NServiceListener\NServiceListener\Program.cs:line 35 
     at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
+0

我只是尝试手动创建队列也没有工作。 – stimms 2010-02-24 17:25:45

回答

2

事实证明我是个白痴和乌迪就已经解决了这个在第二个有我张贴所有需要的信息。我的配置文件包含

<MsmqTransportConfig 
    InputQueue="ListenQueue" 
    ErrorQueue="error" 
    NumberOfWorkerThreads="1" 
    MaxRetries="5" 
    /> 

    <UnicastBusConfig> 
    <MessageEndpointMappings> 

     <add Messages="EnformMessages" Endpoint="EnformMessages" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 

正如你可以看到我试图听上一个不存在的队列称为EnformMessages消息。将其更改为InputQueue名称或将InputQueue名称更改为EnformMessages即可解决问题。我很尴尬我的愚蠢

+0

当我设置.IsTransactional(false)时,我也得到了这个错误信息,但应该是真的 – Matt 2013-04-02 20:54:43