我们正在使用Microsoft的发布管理来促进环境中的代码更改。如果尚未安装MSMQ队列,则安装程序将创建它们。问题是创建队列需要提升权限才能正确创建队列。发布管理代理帐户是本地计算机上的管理员。我们收到的错误消息是:
队列不存在或您没有足够的权限来执行操作。
有没有办法在安装阶段绕过队列的创建,并让服务启动时创建(默认情况下我们作为本地系统运行)?
我们欢迎任何想法,以帮助正确安装和启动此服务。
[UPDATE]
以下是日志中的消息:
2014-09-03 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()
位于c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Transports \ Msmq \ MsmqDequeueStrategy.cs中的NServiceBus.Transports.Msmq.MsmqDequeueStrategy.QueueIsTransactional():第144行
---内部异常堆栈跟踪结束---
位于c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Transports \ Msmq \ MsmqDequeueStrategy.cs中的NServiceBus.Transports.Msmq.MsmqDequeueStrategy.QueueIsTransactional():第153行
at NServiceBus.Transports.Msmq.MsmqDequeueStrategy.Init(地址,TransactionSettings设置,Func 2 tryProcessMessage, Action
2 endProcessMessage)在c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Transports \ Msmq \ MsmqDequeueStrategy.cs:第67行
位于c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Unicast \ Transport \ TransportReceiver.cs中的NServiceBus.Unicast.Transport.TransportReceiver.StartReceiver():第245行
位于c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Unicast \ Transport \ TransportReceiver.cs中的NServiceBus.Unicast.Transport.TransportReceiver.Start(地址):第211行
位于c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Unicast \ UnicastBus.cs中的NServiceBus.Unicast.UnicastBus.Start(Action startupAction):第806行
at NServiceBus.Hosting.GenericHost.Start()in c:\ BuildAgent \ work \ 31f8c64a6e8a2d7c \ src \ NServiceBus.Core \ Hosting \ GenericHost.cs:line 78
[更新2]
在目标服务器上禁用UAC并运行" NServiceBus.Host.exe / install"后,安装和队列创建工作正常。有没有人知道我们可以在不在目标服务器上禁用UAC的情况下进行安装?
答案 0 :(得分:0)
我们最终做的是创建MSMQ队列作为发布管理模板的一部分。这样,当服务安装程序运行时,已经创建了队列,这使我们能够保持启用UAC。