MSMQ Over http in .net cf 2.0

Hi,

I am trying to use msmq over http (or srmp) in a smart device application (.net cf). I have been able to send messages over http in a desktop application ,but I am not able to do the same in .net cf. Is msmq over http supported in .net cf 2.0 For Windows Server 2003 I had to install a msmq over http component , is there something similar that needs to be done on the device/emulator Am I missing something here

Thanks,

Deepthi



Answer this question

MSMQ Over http in .net cf 2.0

  • Z.Z.C

    Yes, there's MSMQ ISAPI DLL you need to hook into CE Web server.

    Also you need to fix all networking issues. You must be able to reach device MSMQ URL from desktop’s IE.

    I would advice against using AS for networking as it’s quite limited. Set up emulator with virtual network (search emulator's forum if you don't know how) or use real device with real production networking.



  • mark brayton

    Moving to .NET Compact Framework forum

  • Cogz

    Hi,

    I am trying to use msmq over http (or srmp) in a smart device application (.net cf). I have been able to send messages over http in a desktop application ,but I am not able to do the same in .net cf. Is msmq over http supported in .net cf 2.0 For Windows Server 2003 I had to install a msmq over http component , is there something similar that needs to be done on the device/emulator Am I missing something here

    Thanks,

    Deepthi


  • Debbie M

    Hi Deepthi,

    MSMQ is supported on .Net Compact Framework 2.0. Please see http://msdn2.microsoft.com/en-gb/library/ms229665.aspx for more information and a link to a .Net Compact Framework 2.0 sample that uses MSMQ.

    I hope this is helpful,

    Michael Green [MSFT]


  • Zoe Elmo

    Thanks for the reply Michael ! I have been able to send and receive meesages on the local queues .net cf ,but not able to do so using direct addressing format (for eg @"FORMATNAME:DIRECT=TCP:ip_address\private$\testq" or @"FormatName:DIRECT=http://ip_address/msmq/Private$/testq")

    I am getting an exception that has the following message "Cannot determine if the queue with the specified format name exists". Is there support for msmq over http or srmp in .net cf

    Thanks,

    Deepthi


  • Xiaobo Gu

    System.Messaging is not aware of transport mechanism, it just passes queue name to the native MSMQ as is. If particular MSMQ supports SRMP and is properly configured, it would work. Note SRMP requires web server installation on the device.

    SRMP is not supported on PPC 2003.



  • R Raghu

    Hi,

    I am trying to send messages using msmq over http. But I am not able to receive and read the messages. I read in blogs that you cannot read the messages using direct format names, so I am trying to access the queue on the receiver using the following code :

    Sender :

    System.Messaging.MessageQueue mq =

    new System.Messaging.MessageQueue("FormatName:DIRECT=http://ip_address/private$/msmq/notifications" ;

    ...code for sending the message

    At the Receiver:

    MessageQueue q = new MessageQueue(@".\private$\notifications");

    try

    {

    System.Messaging.Message m = q.Receive(new TimeSpan(1, 1, 0));

    MessageBox.Show((string)m.Body);

    }

    But when the code to receive from this queue is executed ( q.Receive(new TimeSpan(1, 1, 0)) ) , I am getting the following System.Messaging.MessageQueueException with the following message : "The queue does not exist or you donot have sufficient permissions to perform this operation" .

    I verified that message queueing is installed. Also on the sending machine I verified in \system32\msmq\storage folder and found that my message was present there. Is the message getting sent in the first place How do i verify the same If yes, how do I receive the message that has been sent using http

    Could you please help me out here

    Thanks,

    Deepthi


  • Brainsponge

    Thanks for the reply ! I have been able to send and receive meesages on the local queues .net cf ,but not able to do so using direct addressing format (for eg @"FORMATNAME:DIRECT=TCP:ip_address\private$\testq" or @"FormatName:DIRECT=http://ip_address/msmq/Private$/testq")

    I am getting an exception that has the following message "Cannot determine if the queue with the specified format name exists". Is there support for msmq over http or srmp in .net cf

    Thanks,

    Deepthi


  • Basmanner

    Hi Deepthi

    Yes, System.Messaging namerspace (MSMQ) is supported on .NET CF 2.0. In addition you have to install the MSMQ package on the device.

    Overview see: http://msdn2.microsoft.com/en-us/library/ms229665.aspx
    Install MSMQ on WM5: http://msdn2.microsoft.com/en-us/library/ms880661.aspx

    Hope this helps
    Michael



  • Jebat

    First of all, why would you even try creating the local queue (on localhost) via HTTP Always do it locally.

    Note you can not create/delete/read remote queues on MSMQ CE regardless of protocol.

    Next, your URL is incorrect, should be:

    FormatName:Direct=HTTP://server_name/MSMQ/private$/testq

    Note MSMQ should be before queue name. Before you continue, try accessing this URL from IE/Pocket IE. If you can’t reach, MSMQ can’t do it either.



  • Geoff Dupuis

    Thank you so much Ilya ! I am now able to send messages from my emulator to desktop through http. But not able to do it the other way around-from the desktop to the emulator. I have verified the following :

    1.I have installed and started httpd (web server for windows ce), and http://localhost works on Pocket IE.

    2.I have cradled the emulator and connected it to the desktop via active sync

    3.Not able access the emulator from desk top : i tried http://emulator_name

    4.Even direct access to the emulator queue using

    @"FormatName:Direct=OS:WM_Administrat1\Private$\MEDCItemsQueue" does not work.

    I am missing something here In the desktop version, we had to install a separate component that would enable http on msmq (this component created a vdir called msmq and all messages sent through http would get routed through this one.)Is there a similar component that needs to be installed for wm 5.0 /emulator

    Please do let me know-I am really stuck here.

    Thanks,

    Deepthi


  • Fred Robinson

    Thank you so much for your reply Michael.

    In fact I am not able to create a queue using Direct format names at all in the .net cf code. Following is the code that I have written :

    string strDestQ =@"FormatName:Direct=HTTP://localhost/private$/MSMQ/testq";

    try

    {

    if(!MessageQueue.Exists(strDestQ))

    MessageQueue.Create(strDestQ);

    MessageQueue mq = new MessageQueue(strDestQ);

    mq.DefaultPropertiesToSend.UseDeadLetterQueue = true;

    mq.Send("Hello");

    But in MessageQueue.Exists() I am getting the following exception :

    "cannot determine whether a queue of the specified format name exists"

    If I remove the check for the queue.exists and try to create a queue with the direct format name, I am getting the following exception in MessageQueue.Create() :

    "cannot create a queue with path: FormatName:Direct=HTTP://localhost/private$/MSMQ/testq"

    Infact, the same exceptions occur whenever I creat the queue with any direct format name in .net cf 2.0 (TCP/OS/HTTP).

    I have verified the following :

    1.Httpd web server installed

    2.Msmq installed, registered and started

    3.srmp enabled

    Am I missing something here Could you please help me out with the same asap I am really stuck here ...

    Thanks,

    Deepthi


  • Sergio Ortiz

    Thanks Ilya ! I verified the Msmq key under HKLM/Comm/HTTPD and found that it has been set to \windows\SrmpIsapi.dll. Is this what you meant by hooking on the dll to the web server However, I was not able to find this dll under windows folder on the emulator. Should I download and copy this dll separately If yes, where should I download it from-because msdn says that it should be installed as a part of the OS image by selecting the SRMP option.
  • VBAddict

    Hi,

    I am trying to use msmq over http (or srmp) in a smart device application (.net cf 2.0 windows mobile 5.0 emulator). I have been able to send messages over http in a desktop application ,but I am not able to do the same in .net cf. In fact I am not able to create a queue using Direct format names at all in the .net cf code. Following is the code that I have written :

    string strDestQ =@"FormatName:Direct=HTTP://localhost/private$/MSMQ/testq";

    try

    {

    if(!MessageQueue.Exists(strDestQ))

    MessageQueue.Create(strDestQ);

    MessageQueue mq = new MessageQueue(strDestQ);

    mq.DefaultPropertiesToSend.UseDeadLetterQueue = true;

    mq.Send("Hello");

    But in MessageQueue.Exists() I am getting the following exception :

    "cannot determine whether a queue of the specified format name exists"

    If I remove the check for the queue.exists and try to create a queue with the direct format name, I am getting the following exception in MessageQueue.Create() :

    "cannot create a queue with path: FormatName:Direct=HTTP://localhost/private$/MSMQ/testq"

    Infact, the same exceptions occur whenever I creat the queue with any direct format name in .net cf 2.0 (TCP/OS/HTTP).

    I have verified the following :

    1.Httpd web server installed

    2.Msmq installed, registered and started

    3.srmp enabled

    Am I missing something here Could you please help me out with the same asap I am really stuck here ...

    Thanks,

    Deepthi


  • MSMQ Over http in .net cf 2.0