2014-09-02 59 views
1

我们正在使用Microsoft的发布管理来促进通过环境的代码更改。如果安装程序尚未安装,则会创建MSMQ队列。问题是创建队列需要提升权限才能正确创建队列。发布管理代理帐户是本地计算机上的管理员。我们收到的错误消息是:NServiceBus发布自动化

队列不存在或者您没有足够的权限执行该操作。

有没有办法在安装阶段绕过创建队列,并让创建在服务启动时发生(默认情况下我们将作为本地系统运行)?

我们愿意帮助您正确安装和启动此服务。

[UPDATE]

下面是从日志中的消息: 2014年9月3日08:47:55.522 -04:00 [致命]异常起始端点时。 System.InvalidOperationException:输入队列存在问题:FormatName:DIRECT = OS:DNABUS1 \ private $ \ Purchasing.OrderEntry.Bridging。详情请参阅随附的例外---> System.Messaging.MessageQueueException:队列不存在或您没有足够的权限执行操作。 在System.Messaging.MessageQueue.MQCacheableInfo.get_Transactional() 在System.Messaging.MessageQueue.get_Transactional() 在NServiceBus.Transports.Msmq.MsmqDequeueStrategy.QueueIsTransactional(c)中:\ BuildAgent \工作\ 31f8c64a6e8a2d7c \ SRC \ NServiceBus .Core \ Transports \ Msmq \ MsmqDequeueStrategy.cs:144行 ---内部异常堆栈跟踪的末端--- at NServiceBus.Transports.Msmq.MsmqDequeueStrategy.QueueIsTransactional()in c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Transports \ Msmq \ MsmqDequeueStrategy.cs:line 153 at NServiceBus.Transports.Msmq.MsmqDequeueStrategy.Init(Address address,TransactionSettings settings,Func 2 tryProcessMessage, Action 2 endProcessMessage)in c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Transports \ Msmq \ MsmqDequeueStrategy.cs:line 67 at NServiceBus.Unicast.Transport.TransportReceiver.StartReceiver()in c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Unicast \ Transport \ TransportReceiver.cs:line 245 at NServiceBus.Unicast.Transport.TransportReceiver.Start (Address address)in c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Unicast \ Transport \ TransportReceiver.cs:line 211 at NServiceBus.Unicast.UnicastBus.Start(Action startupAction)in c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Unicast \ UnicastBus.cs:line 806 at NServiceBus.Hosting.GenericHost.Start()in c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Hosting \ GenericHost.cs: line 78

[UPDATE 2]

禁用目标服务器上的UAC并运行“NServiceBus.Host.exe/install”后,安装和队列创建工作正常。有没有人知道我们可以在不禁用目标服务器上的UAC的情况下进行安装?

+0

你运行主机安装NServiceBus.Integration参数? – 2014-09-03 13:25:27

+0

我从自动发布工具运行“NServiceBus.Host.exe/install”。我已经禁用服务器上的UAC,并且仍然收到相同的消息。主机操作系统准备就绪(Perf Counters,RavenDB,MSMQ等)并等待安装。我可以从管理员命令提示符下运行,并且它可以正常工作。 – SamtecCraig 2014-09-03 13:29:28

+0

另一种选择可能是使用[PowerShell](http://docs.particular.net/nservicebus/managing-nservicebus-using-powershell)并只安装你想要的。这将需要您的管道中的另一个步骤 – 2014-09-04 08:50:16

回答

0

我们最终做的是创建MSMQ队列作为发布管理模板的一部分。这样,当服务安装程序运行时,队列已经创建,这使我们能够保持UAC的启用。