MQClient访问MQServer遇到2035 MQRC NOT AUTHORIZED问题

zhangdeyi19840628 2010-08-18 06:55:21
小弟通过 MQ 用公司的服务器 连 另一公司的服务器 传输数据。
开发语言是C#,引用了amqmdnet.dll

之前自己搭建的测试环境中使用没有问题。但是今天和对方的测试系统联调出现了2035的报错。
本地的测试环境 和 对方服务器环境的区别是

对方环境
服务器公网IP: *.*.*.94
队列管理器: QM_APL_WMSEDI
端口: 1415
CCSID: 819
队列名称: Q_WMS_TO_EDI_002
服务器连接通道: QC_EDI_WMS_001
用户名: mqm_unionedi

之前的本地测试环境
服务器公网IP: *.*.*.45
队列管理器: QM_APL_WMSEDI
端口: 7788
CCSID: 默认,没动
队列名称: Q_WMS_TO_EDI_002
服务器连接通道: QC_EDI_WMS_001
用户名: 搭建的环境中没有自己建用户名


和对方的技术人员排除了网络的连接问题。
我的疑惑是比较两个环境中用户名之前我没有设置。是否需要设置,并在代码的那里设置我使用过MQEnvironment.UserID=***不过仍报这个错误。
是不是我没有配置用户名的原因呢,如果要配置,在代码的哪里配置呢。我看MQEnvironment里好像没有相应的属性啊
各位老大帮忙了,急死我了。
小弟先谢过,在线等。



贴上代码:
MQEnvironment.Hostname = ConfigerFile.IpAddress;
MQEnvironment.Channel = ConfigerFile.Channel;
MQEnvironment.Port = ConfigerFile.Port;
MQQueueManager mqQueueManager = new MQQueueManager(ConfigerFile.MQManagerName);//就在这一步报了异常
//下面的应该没有什么问题
mqQueue = mqQueueManager.AccessQueue(ConfigerFile.PutQueue, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
mqMessage = new MQMessage();
mqMessage.WriteString(msg.ToString());
mqMessage.Format = MQC.MQFMT_STRING;
mqPutMsgOpts = new MQPutMessageOptions();
mqQueue.Put(mqMessage, mqPutMsgOpts);
...全文
594 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zengyong123 2011-12-07
  • 打赏
  • 举报
回复
请问楼主,你这问题解决了么?我也碰到了一样的问题,求指导
doryxin1 2011-08-31
  • 打赏
  • 举报
回复
MQSeries 客户端与MQSeries服务端通讯时,报2035错误
通常情况下,MQ客户端与MQ服务器端通讯时,使用MQ服务器端的服务连接通道在MCAUSER属性中指定的用户作为MQ客户端连上来时使用的用户,如果MCAUSER属性值为空,则使用MQ客户端所在操作系统使用的用户作为MQ客户端连上来时使用的用户。通讯时,报2035错误,就是由于客户端与服务器端通讯时所使用的用户没有权限造成的。解决办法有两种:

方法1:
在服务器端的服务连接通道定义中设置MCAUSER属性的值为mqm组的用户:(下例中假设通道定义名为SERVER)
ALTER CHANNEL(chl1) CHLTYPE(SVRCONN) MCAUSER(MUSR_MQADMIN) replace,在mq7.0中,这个用户不是mqm,是MUSR_MQADMIN
同时确保mqm用户为mqm组的成员,具体办法随MQ 服务器所在的操作系统而定,在此就不再赘述。

方法2:
若保持MQ服务器端的通道定义的MCAUSER属性值为缺省值,即为空,则可将MQ客户端所使用的用户添加到MQ服务器所在的操作系统中。例如,若MQ客户端使用的用户为ADMIN,则在MQ服务器端添加用户ADMIN,并保证此用户在MQ服务器端的mqm组中,以及有执行队列管理器上的操作所必需的权限。
dqxu 2010-08-31
  • 打赏
  • 举报
回复
我也遇过这类问题,和你不同的是.我原来在linux下没有问题,换成windows就有问题.后来把windows登录的用户名加到mqm组就好了.你可以试试,如果还是不行那对方加一个用户给你.
vacation_3_year 2010-08-19
  • 打赏
  • 举报
回复
这个问题我以前遇到过

少放个DLL

winform里只要引用amqmdnet.dll就可以了

asp.net项目里的bin文件夹要放 amqmdnet.dll,amqmdxcs.dll 这两个
lsq667 2010-08-19
  • 打赏
  • 举报
回复
水平有限,帮顶。MQ还没搞明白是什么东东~~~~~~
jeven_xiao 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhangdeyi19840628 的回复:]
没人回答啊。高手们帮帮忙。谁能告诉我.net操作MQ代码里怎么设置用户名?或者MQ客户端如何设置连服务器的用户名
[/Quote]

这个问题好像真的有点搞不懂,只好帮顶了,水平有限
zhangdeyi19840628 2010-08-19
  • 打赏
  • 举报
回复
没人回答啊。高手们帮帮忙。谁能告诉我.net操作MQ代码里怎么设置用户名?或者MQ客户端如何设置连服务器的用户名
zhangdeyi19840628 2010-08-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vacation_3_year 的回复:]
这个问题我以前遇到过

少放个DLL

winform里只要引用amqmdnet.dll就可以了

asp.net项目里的bin文件夹要放 amqmdnet.dll,amqmdxcs.dll 这两个
[/Quote]

amqmdnet.dll引用了。如果不引用编译都过不去的。
问题还是存在,我怀疑是对方MQServer的通道属性的MCA参数暨用户名配的不对,不是mqm组或其它。
不过那边我访问不了。有什么方法在MQClient端检验Server短的用户合法性么
zhangdeyi19840628 2010-08-18
  • 打赏
  • 举报
回复
这个全线检查的我看过。不过是要在对方的MQServer上检查,我们服务器只装了个MQClient 能检查对方的服务器用户权限么。
我们根本上不去他们的服务器。所以。。。。
还有 我本地模拟了他们的环境。可以,只有换一个没有权限的MAC名时,报同样的错误。
所以怀疑对方服务器权限是不是有问题。

但是他们说用户名很多对接在用。按道理不应该啊。


还有谁能解释一下为什么.net开发的时候不需要配置用户名么?或者需要的话在那配置呢?
MQEnviroment.userid
MQEnvironment.password
我试过。不行
wuyq11 2010-08-18
  • 打赏
  • 举报
回复
zhangdeyi19840628 2010-08-18
  • 打赏
  • 举报
回复
怎么没人回呀。急死我了.
大神们 快来呀

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧