我有一个在Windows 2003服务器上正常运行的现有应用程序。我一直在将它移动到Windows 2008r2,当应用程序试图访问队列时,它得到以下错误?我的应用程序池的Indentity用户可以完全控制我的消息队列。有没有人对如何解决这个问题有任何想法。我相信这是服务器配置问题。
[MessageQueueException (0x80004005): Access to Message Queuing system is denied.]
System.Messaging.MQCacheableInfo.get_ReadHandle() +221
System.Messaging.MessageEnumerator.get_Handle() +70
System.Messaging.MessageEnumerator.MoveNext(TimeSpan timeout) +93
System.Messaging.MessageQueue.GetAllMessages() +58
NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage.Init(IList`1 messageTypes) +124
NServiceBus.Unicast.UnicastBus.Start(Action`1[] startupActions) +674
Connector.Service.InitBus() +201
Connector.OutgoingService..cctor() +9
答案 0 :(得分:4)
从Win 2003迁移到Win 2008 R2时,我获得了相同的体验 - 事实证明,当我使用.NET API创建队列时,2008 R2会使用小写字母创建队列。稍后当应用程序尝试访问队列时,它无法使用大写字母访问它们(给出您说明的错误)。使用小写可以解决问题。
/ AZ
答案 1 :(得分:2)
我还得到以下内容:
System.Messaging.MessageQueueException(0x80004005):拒绝访问消息队列系统。从以下生成:NServiceBus.Utils.MsmqUtilities。
在'错误'队列上给予'每个人'权限解决了这个问题。
答案 2 :(得分:0)
我也使用2008 R2,是的,正在创建的实际队列名称是低级的,但在我的代码中,使用大写字母访问它很有效。
答案 3 :(得分:0)
还添加了匿名登录'它起作用了。