MSMQ: C# MSMQ编程问题
现在想在局域网内用MSMQ通讯,计算机都在工作组内。请问在工作组内实现MSMQ通讯的步骤是什么?谢谢。
在常报的异常是:
对消息队列系统的访问被拒绝
队列路径名无效
远程计算机不可用
换下面这种方式表示地址也不行哦。
1.一种是以机器名(计算机名)的表示方法
FormatName:DIRECT=OS:计算机名\Private$\队列名称
比如: FormatName:DIRECT=OS:Server01\Private$\Demo
2.另一种是以IP地址的表示方法
FormatName:DIRECT=tcp:IP地址\Private$\队列名称
下面是我实现的代码,该代码在本机上实现收发消息都是正常的,缺不能实现2台机器间的通讯。
private void FSend() //发送
{
string queuename = ".\\private$\\testQueue";//队列名称
MessageQueue q;
if (MessageQueue.Exists(queuename))
{
q = new System.Messaging.MessageQueue(queuename);
}
else
{
q = MessageQueue.Create(queuename);
q.SetPermissions("Everyone", MessageQueueAccessRights.FullControl);
}
System.Messaging.Message m = new System.Messaging.Message();
m.Label = "MessageLabel gaga"; //描述消息的字串
m.Body = "MessageBody gaga"; //消息的主体
q.Send(m); //发送
MessageBox.Show("发送成功");
}
private void Recevie() //接受
{
try
{
//两种Path名都不行 //string queuename = "kjxin08\\private$\\testQueue";//队列名称
MessageQueue q = new MessageQueue(@"FormatName:DIRECT=tcp:192.168.150.34\Private$\testQueue");
//q.Formatter = new XmlMessageFormatter(new Type[] { typeof(aa) });
System.Messaging.Message m = q.Receive();
m.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
label1.Text = m.Body.ToString();
MessageBox.Show("接受成功");
}
catch (MessageQueueException ex)
{
MessageBox.Show(ex.Message);
}
}
哪位高手帮解决一下了。 THS
------解决方案--------------------http://hi.baidu.com/yaowangdexiaoniao/blog/item/d1c3b586b9503c3e67096e36.html
------解决方案--------------------
在计算机管理中
找到那个消息队列,右键点击,找到权限设置
一般是有2个角色,把那个 完全控制 打勾 就可以了
------解决方案--------------------
在计算机管理中
找到那个消息队列,右键点击,找到权限设置
一般是有2个角色,把那个 完全控制 打勾 就可以了
messageQueue.SetPermissions("ANONYMOUS LOGON", MessageQueueAccessRights.FullControl);
messageQueue.SetPermissions("administrator", MessageQueueAccessRights.FullControl);
请问针对不同的用户如何设置权限??不会就上面的语句吧????
如接受消息的计算机登录用户为 test
MSMQ服务器发送的消息只想 test 来接收
该如何设置呢??
THS