none
远程消息队列的创建 RRS feed

  • 问题

  • 最近由于工作需要,研究了一下消息队列。创建本地的消息队列一切完好。关键是从本地操作远程计算机的消息队列就不行了,每次的异常都是:无法确定具有指定格式名的队列是否存在。现在把代码发出来,大家帮帮忙啊!调试到if的时候就出异常

                if (MessageQueue.Exists(@"FormatName:DIRECT=TCP:10.2.151.199\Private$\MyQueue"))
                {
                    queue = new MessageQueue(@"FormatName:DIRECT=TCP:10.2.151.199\Private$\MyQueue");
                }
                else
                {
                    queue = MessageQueue.Create(@"FormatName:DIRECT=TCP:10.2.151.199\Private$\MyQueue");
                }

    2011年7月22日 2:31

答案

  • 其实问题出在您的默认凭据没有远程计算机的访问权限。您可以先利用 IPC 与远程计算机建立一个信道,然后再试试创建 MessageQueue。

    通过 net use 命令可以很容易的创建 IPC 连接。比如:

    net use \\10.0.0.1\ipc$ /user:youruser *

    输入 youruser 的密码 (密码不显示的,不要以为没有输入进去。。。),看到 successfully established 提示后再运行代码试试看。

    注意,youuser 必须是远程计算机管理员组的用户。比如 administrator。


    Mark Zhou
    • 已标记为答案 Cookie Luo 2011年8月3日 5:52
    2011年7月26日 7:27

全部回复

  • dear

    1.检查您的防火墙

    2.先确认远程建立字串是否正确,您这是用网路芳鄰的分享吗??若是的话试试

    MessageQueue(@"FormatName:DIRECT=TCP:\\10.2.151.199\Private$\MyQueue");

     


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年7月22日 3:09
  • 哥们,首先谢谢你的回复.我是在公司调试的这个,上面写的IP是一个同事的IP,我跟他在一个局域网内.我刚才检查了下他的防火墙,是关闭的.下面是代码

                

    //实例化queue对象
          if (MessageQueue.Exists(@"FormatName:DIRECT=TCP:\\10.2.151.199\Private$\MultiCastQueue"))
          {
            queue = new MessageQueue(@"FormatName:DIRECT=TCP:\\10.2.151.199\Private$\MultiCastQueue");
          }
          else
          {
            queue = MessageQueue.Create(@"FormatName:DIRECT=TCP:\\10.2.151.199\Private$\MultiCastQueue");
          }


    还是出那个异常:无法确定具有指定格式名的队列是否存在。很是纠结.麻烦你再看看!

    2011年7月22日 3:57
  • dear

    你得在远端有账号密码

    先看看能否浏览\\10.2.151.199


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年7月22日 4:15
  • 哥们,貌似不行.好像说必须加入AD域才能做远程访问.

    2011年7月22日 9:29
  • dear

    资料放在AD网域下!?那Client必须要加入AD才能有该服务


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年7月22日 10:33
  • 其实问题出在您的默认凭据没有远程计算机的访问权限。您可以先利用 IPC 与远程计算机建立一个信道,然后再试试创建 MessageQueue。

    通过 net use 命令可以很容易的创建 IPC 连接。比如:

    net use \\10.0.0.1\ipc$ /user:youruser *

    输入 youruser 的密码 (密码不显示的,不要以为没有输入进去。。。),看到 successfully established 提示后再运行代码试试看。

    注意,youuser 必须是远程计算机管理员组的用户。比如 administrator。


    Mark Zhou
    • 已标记为答案 Cookie Luo 2011年8月3日 5:52
    2011年7月26日 7:27