none
wince 环境下 收发 消息队列的 问题 RRS feed

  • 问题

  •  

    wince 环境下 收发 消息队列的问题

     

    设备型号:symbol mc3000

    系统:wince5.0

     

    服务器上的消息队列已经创建好了

    设备已经成功连接到服务器,网络连接正常。

     

    问题描述:我用c#写了个测试的程序已经部署到设备上,当从设备上发消息队列的时候出现错误“消息队列服务不可用”

    请教是什么问题?

     

    System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue(@"china-8d5578550\private$\yu");
            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    string my = "ok";
                    System.Messaging.Message newMessage = new System.Messaging.Message(my);
                    newMessage.Label = my.ToString();
                    mq.Send(newMessage);
                    label1.Text = mq.Label;
                }
                catch (System.Messaging.MessageQueueException ex)
                {
                    label1.Text = ex.Message;
                }
            }

            private void button2_Click(object sender, EventArgs e)
            {
                try
                {
                  
                    System.Messaging.Message m = mq.Receive(new TimeSpan(0, 0, 15));
                   
                    m.Formatter = new System.Messaging.XmlMessageFormatter(new string[] { "System.String,mscorlib" });
                  
                    label1.Text = m.Body.ToString() + m.Label;

                }
                catch (System.Messaging.MessageQueueException ex)
                {
                    label1.Text = ex.Message;
                }
            }

    2008年8月29日 2:36

答案

全部回复

  • 您在Build OS image的时候加入MSMQ组件了么?

    2008年8月31日 15:48
    版主
  • 何宗键 您好:
    按您的方法做了,有点眉目了。

     

    msmq组件已经安装到设备上了。

     

    在移动设备本机上发送和接受都没有问题,但是发到服务器上提示错误“队列不存在,或者您没用足够的权限执行该操作”。程序在我电脑上可以发送成功。

     

     

    @"FormatNameBig SmileIRECT=OSTongue Tiederver\private$\yu";//服务器 不成功。提示“队列不存在,或者您没用足够的权限执行该操作”

     

     @"FormatNameBig SmileIRECT=OS:.\private$\yu";////设备本机 发送和接收都可以。


     

    请问还要怎么设置?
    2008年9月2日 5:34
  • 有几个东西变成乱码了,能重新输入以下么?

    2008年9月2日 13:01
    版主
  • msmq组件已经安装到设备上了。

     

    服务器上的队列名是:yu

     

    服务器名:china-8d5578550

     

    经过您的指导和我的测试,现在可以成功发送到服务器,但是接收时失败。

     

    情况如下:

    1.我把队列的路径指到服务器,并且把服务器的guest用户开启并分配给他所有权限,在这种情况下 向服务器发送成功,但是接收不成功,如下:

    System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue(@"china-8d5578550\private$\yu");\\发到服务器成功,但是接收时失败 ,提示“队列不存在,或者您没用足够的权限执行该操作”

     

     

    2.如果把队列的路径指到设备本机,发送和接受都没用问题。
    System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue(@".\private$\yu");

     

    3.根据以上情况,推测是否移动设备和服务器之间的信任连接存在问题?

    2008年9月3日 1:08
  •  

    问题已经解决。

     

    移动设备不能读远程队列。

    http://msdn.microsoft.com/en-us/library/ms229665(VS.80).aspx

    The .NET Compact Framework does not support the following features, because they are not available in Windows CE:

    • Multiple message transactions. Transaction support is limited to single message transaction.

    • Remote queue read./不支持远程读取

    • Encryption.

    • Security based on an Access Control List (ACL).

    • MQMail.

    • Public queues based on Active Directory.

      后来在wince设备上建立队列,然后服务器向设备发送。

    现在收发都ok。

    2008年9月4日 3:46
  • 想实现一个功能,就是像qq那样当服务器发来消息时能自动提醒?

     

    暂时想到用timer控件定时检测队列,队列有消息就提醒。这个方法觉得挺笨,请问还有好的方法没???

     

    2008年9月4日 3:52