Putting Nachricht in Websphere MQ via C# hat verschiedene Daten, die Länge als auch manuell indem ich die gleiche Meldung

MQMessage queueMessage = new MQMessage();
                queueMessage.WriteString(strInputMsg);
                queueMessage.Format = MQC.MQFMT_STRING;
                MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
                Queue.Put(queueMessage, queuePutMessageOptions);

Verwendung von C#, mit dem obigen code, wenn ich den Eingang der Nachricht in die Warteschlange, die Daten, die Länge der Nachricht ist 3600.

Wenn ich manuell die Eingabe der Nachricht in die queue mit der rechten Maustaste auf die Warteschlange und wählen Setzen Test-Nachricht option, die Daten, die Länge der Nachricht ist 1799.

Ich bin wirklich verwirrt, warum dies der Fall ist. Die Botschaft in beiden Fällen wird eine xml-Zeichenfolge mit Erklärung. In Notepad++ gibt es 1811-Zeichen, einschließlich der Erklärung. Wenn ich eine Nachricht im debugger, bevor ich die Eingabe in der Warteschlange, der die Nachricht in xml konvertiert, ohne jede Linie oder Rückkehr Wagen.

Habe ich den xml-string verwenden:

//converts string message into xml by serializing it
 public string GetMessage(MyMessage messageInstance)
{

//Serialize the request
            XmlSerializer xsr = new XmlSerializer(typeof(MyMessage));
            MemoryStream memoryStream = new MemoryStream();
            XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
            xsr.Serialize(xmlTextWriter, messageInstance);

            memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
            string XmlizedString = new UTF8Encoding().GetString((memoryStream.ToArray());


            //Encode the xml
            Encoding utf = Encoding.UTF8;
            byte[] utfBytes = utf.GetBytes(XmlizedString);

            //Load the document (XmlResolver is set to null to ingore DTD)
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.XmlResolver = null;
            xmlDoc.LoadXml(utf.GetString(utfBytes));
            return utf.GetString(utfBytes);

Bin ich etwas fehlt in meinem C# - Implementierung, ist das hinzufügen von zusätzlichen Zeichen?

Dank.

  • UTF8 vs ASCII ?
InformationsquelleAutor InfoLearner | 2011-08-11
Schreibe einen Kommentar