locked
How can receive plain text Message? RRS feed

  • Question

  • Client:

     Message msg = new Message();

                string str = "microsoft";
                byte[] content = System.Text.Encoding.Utf8.GetBytes(str);
                byte[] header = new byte[4];
                header = BitConverter.GetBytes(content.Length);

                byte[] cmd = new byte[1];
                cmd = BitConverter.GetBytes(82);
                byte[] b = new byte[content.Length + 5];
                header.CopyTo(b, 0);
                b[4] = cmd[0];
                content.CopyTo(b, 5);
                MemoryStream ms = new MemoryStream();
                //   ms.Write(header,0,header.Length);
                //   ms.Write(cmd,0,cmd.Length);
                ms.Write(b, 0, b.Length);


                msg.BodyStream = ms;

    Then,I can't receive this message in service use msmqIntegrationBinding.Why?

    Friday, June 16, 2006 10:05 AM

Answers

  • Hello,

    by default MsmqIntegrationBinding has SerializationFormat set to Xml. Given that, it expects the data to be serialized using XmlSerializer.

    In order to consume plain-text messages you'll have to switch to a different serialization format (ByteArray or Stream).

    - leszek

     

    Friday, June 16, 2006 7:16 PM

All replies

  • service:

     using (ServiceHost serviceHost = new ServiceHost(typeof(OrderProcessorService)))
                {
                    serviceHost.Open();

                    // The service can now be accessed.
                    Console.WriteLine("The service is ready.");
                    Console.WriteLine("Press <ENTER> to terminate service.");
                    Console.ReadLine();

                    // Close the ServiceHostBase to shutdown the service.
                    serviceHost.Close();
                }

    Config:

        <services>
          <service
            name="Microsoft.ServiceModel.Samples.OrderProcessorService">
            <endpoint address="msmq.formatname:DIRECT=OS:.\private$\Orders"
               binding="msmqIntegrationBinding"
                      bindingConfiguration="OrderProcessorBinding"
                      contract="Microsoft.ServiceModel.Samples.IOrderProcessor">
            </endpoint>
          </service>
        </services>

        <bindings>
          <msmqIntegrationBinding>
            <binding name="OrderProcessorBinding" exactlyOnce="true" >
              <security mode="None" />
            </binding>
          </msmqIntegrationBinding>
        </bindings>

    Friday, June 16, 2006 10:07 AM
  • Please take a look at AnandRaj's reply in this thread:

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=98336&SiteID=1

    Friday, June 16, 2006 6:03 PM
  • Hello,

    by default MsmqIntegrationBinding has SerializationFormat set to Xml. Given that, it expects the data to be serialized using XmlSerializer.

    In order to consume plain-text messages you'll have to switch to a different serialization format (ByteArray or Stream).

    - leszek

     

    Friday, June 16, 2006 7:16 PM
  • Hi,

    Did you try Leszek's suggestion?

    Did that work for you?

     

    thanks

    AnandRaj

    Monday, July 24, 2006 5:26 PM