现在想在局域网内用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

解决方案 »

  1.   

    http://hi.baidu.com/yaowangdexiaoniao/blog/item/d1c3b586b9503c3e67096e36.html
      

  2.   

    谢谢,luntanyonghu
    帖子看过了,只是简单的介绍一下,能实现本机的消息收发工作组内如何用MSMQ进行通讯?
    这个问题有解决方案吗?请给出详细的说明步骤,谢谢哦
      

  3.   

    在计算机管理中
    找到那个消息队列,右键点击,找到权限设置
    一般是有2个角色,把那个 完全控制 打勾 就可以了messageQueue.SetPermissions("ANONYMOUS LOGON", MessageQueueAccessRights.FullControl);
    messageQueue.SetPermissions("administrator", MessageQueueAccessRights.FullControl);请问针对不同的用户如何设置权限??不会就上面的语句吧????
    如接受消息的计算机登录用户为 test
    MSMQ服务器发送的消息只想 test 来接收
    该如何设置呢??
    THS
      

  4.   

    messageQueue.SetPermissions("administrator", MessageQueueAccessRights.FullControl); administrator 换成TESTMessageQueueAccessRights.FullControl
    换成接收的属性
    MessageQueueAccessRights.*
    *是接收没测试过,可能是这样的
      

  5.   


    设置
    msg.Recoverable = true
    其中msg为System.Messaging.Message