3

我们有一个 Windows 服务,它使用 WCF 从 MSMQ 队列中读取消息。最近因为打不开队列,服务启动不了:

Running WcfHost, service contract IWcfService.  :
System.InvalidOperationException: There was an error opening the queue. Ensure 
 that MSMQ is installed and running, the queue exists and has proper authorization
 to be read from. The inner exception may contain additional information. --->
 System.ServiceModel.MsmqException: An error occurred while opening the queue:
 Access is denied. (-1072824283, 0xc00e0025). The  message cannot be sent or 
 received from the queue. Ensure that MSMQ is installed and running. Also ensure 
 that the queue is available to open with the required access mode and 
 authorization.
   at System.ServiceModel.Channels.MsmqQueue.OpenQueue()
   at System.ServiceModel.Channels.MsmqQueue.GetHandle()
   at System.ServiceModel.Channels.MsmqQueue.SupportsAccessMode(String formatName, Int32 accessType, MsmqException& msmqException)
   --- End of inner exception stack trace ---
   at System.ServiceModel.Channels.MsmqVerifier.VerifyReceiver(MsmqReceiveParameters receiveParameters, Uri listenUri)
   at System.ServiceModel.Channels.MsmqTransportBindingElement.BuildChannelListener[TChannel](BindingContext context)
   at System.ServiceModel.Channels.Binding.BuildChannelListener[TChannel](Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, BindingParameterCollection parameters)
   at System.ServiceModel.Description.DispatcherBuilder.MaybeCreateListener(Boolean actuallyCreate, Type[] supportedChannels, Binding binding, BindingParameterCollection parameters, Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, ServiceThrottle throttle, IChannelListener& result, Boolean supportContextSession)
   at System.ServiceModel.Description.DispatcherBuilder.BuildChannelListener(StuffPerListenUriInfo stuff, ServiceHostBase serviceHost, Uri listenUri, ListenUriMode listenUriMode, Boolean supportContextSession, IChannelListener& result)
   at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost)
   at System.ServiceModel.ServiceHostBase.InitializeRuntime()
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at WcfHost`2.Open() 

我们已经仔细检查了队列的权限并且它们没有改变。我们已经运行ProcMon并且没有看到任何拒绝访问事件。我们不知道是什么改变导致了这个错误。

为什么 WCF 不能打开这个队列?

4

1 回答 1

0

您可以尝试从队列设置中关闭 RPC 请求吗?

于 2013-09-05T10:23:24.737 回答