模拟可以在本地但不在服务器上

时间:2012-12-20 10:37:57

标签: ibm-mq impersonation

我遇到我认为冒充的问题,但我可能会弄错。

我有一个IBM XMS使用者,正在使用队列中的数据。工作良好。为了被授予访问队列的权限,服务需要作为特定用户运行,为此我实现了.Net模拟。在所有系统上,我能够让队列运行,当需要重新启动时会出现问题。

为了测试重启,我放置了一个简单的 if(messages == 500)throw ... ,它会触发取消,断开连接和重新连接。

我将应用程序作为Windows服务安装到我的本地计算机,它连接(使用模拟),达到500,抛出,断开连接,重新连接并继续处理消息。但是,当我在服务器上运行相同的代码时,它在尝试创建队列连接时失败。这是错误:

  

7765 [20] ERROR SIS(null) - 无法连接到Websphere MQ   IBM.XMS.XMSException:CWSMQ0006E:在此期间收到了异常   调用ConnectionFactory.CreateConnection方法:   System.ComponentModel.Win32Exception(0x80004005):访问被拒绝
  在System.Diagnostics.ProcessManager.OpenProcess(Int32 processId,   Int32访问,布尔throwIfExited)at   System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId,   Boolean firstModuleOnly)at   System.Diagnostics.ProcessManager.GetModuleInfos(Int32 processId)
  在System.Diagnostics.Process.get_Modules()处   IBM.WMQ.CommonServices.TraceEnvironment()at   IBM.WMQ.CommonServices.CreateCommonServices()at   IBM.WMQ.MQBase..ctor()上的IBM.WMQ.CommonServices.TraceEnabled()
  在IBM.WMQ.Nmqi.Phconn..ctor(NmqiEnvironment env)at   IBM.WMQ.Nmqi.NmqiEnvironment.NewPhconn()at   IBM.XMS.Client.WMQ.WmqConnection..ctor(NmqiEnvironment nmqiEnv,NmqiMQ   nmqiMQ,XmsPropertyContext connectProps)at   IBM.XMS.Client.WMQ.Factories.WmqConnectionFactory.CreateV7ProviderConnection(XmsPropertyContext   connectionProps)。在执行指定的方法期间   异常是由另一个组件引发的。查看链接的异常   欲获得更多信息。在   IBM.XMS.Client.WMQ.Factories.WmqConnectionFactory.CreateProviderConnection(XmsPropertyContext   connectionProps)at   IBM.XMS.Client.Impl.XmsConnectionFactoryImpl.CreateConnection(字符串   userID,String password)at   IBM.XMS.Client.Impl.XmsConnectionFactoryImpl.CreateConnection()at   Spin.TradingServices.DataAcquisition.Domain.DataProcessing.SIS.SISMQConnection.Connect(ImpersonationCredentials   impersonationCredentials)

     

链接异常:System.ComponentModel.Win32Exception(0x80004005):   访问被拒绝   System.Diagnostics.ProcessManager.OpenProcess(Int32 processId,Int32   access,Boolean throwIfExited)at   System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId,   Boolean firstModuleOnly)at   System.Diagnostics.ProcessManager.GetModuleInfos(Int32 processId)
  在System.Diagnostics.Process.get_Modules()处   IBM.WMQ.CommonServices.TraceEnvironment()at   IBM.WMQ.CommonServices.CreateCommonServices()at   IBM.WMQ.MQBase..ctor()上的IBM.WMQ.CommonServices.TraceEnabled()
  在IBM.WMQ.Nmqi.Phconn..ctor(NmqiEnvironment env)at   IBM.WMQ.Nmqi.NmqiEnvironment.NewPhconn()at   IBM.XMS.Client.WMQ.WmqConnection..ctor(NmqiEnvironment nmqiEnv,NmqiMQ   nmqiMQ,XmsPropertyContext connectProps)at   IBM.XMS.Client.WMQ.Factories.WmqConnectionFactory.CreateV7ProviderConnection(XmsPropertyContext   connectionProps)

2 个答案:

答案 0 :(得分:3)

看起来被模拟的用户ID没有足够的权限而且XMS没有问题。

这是一个可能对您有帮助的链接。

Access is denied at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

this也是。

答案 1 :(得分:0)

似乎在IBM站点上有一个可用于此错误的修复程序:

http://www-01.ibm.com/support/docview.wss?uid=swg1IC90674

(如果网址不再可用,请使用Wayback Machine https://archive.org/web/

他们还说有一个本地修复:

  

授予“查询流程信息和读取流程虚拟化”   内存“模仿用户的权限,以便OpenProcess   成功。