簡體   English   中英

使用C#如何清理MSMQ消息格式以與C ++ IXMLDOMDocument2一起使用

[英]Using C# how to clean up MSMQ message format to work with C++ IXMLDOMDocument2

我正在嘗試獲取C ++服務,以從C#生成的MSMQ消息中加載XML文檔。 我真的不能改變C ++的一面,因為我試圖將測試消息注入隊列。 C ++服務正在使用以下內容加載XML。

 CComPtr<IXMLDOMDocument2> spDOM;
 CComPtr<IXMLDOMNode> spNode;
 CComBSTR bstrVal;

 if(_FAILED(hr = spDOM.CoCreateInstance(CLSID_DOMDocument30)))
 {
  g_infoLog->LogCOMError(hr, "CWorker::ProcessBody() Can't Create DOM");
  pWork->m_nFailure = WORKFAIL_BADXML;
  goto Exit;
 }

hr = spDOM->loadXML(bstrBody, &vbResult);

發送MSMQ消息的C#代碼如下所示(只是測試代碼不太漂亮):

    // open the queue 
    var mq = new MessageQueue(destinationQueue)
                          {
                              // store message on disk at all intermediaries 

                              DefaultPropertiesToSend = { Recoverable = true },

                              // set the formatter to Binary, default is XML 
                              Formatter = new BinaryMessageFormatter()
                          };

    // send message
    mq.Send(messageContent, "TestMessage");
    mq.Close();

我嘗試使用BinaryMessageFormatter發送相同的消息,但是在XML啟動之前,它將我認為是Unicode字符的內容放在頂部。

.....ÿÿÿ............. ......À)

如果我使用默認的XML格式化程序,則該消息具有以下頂部元素。 C ++服務似乎無法處理此問題。

<?xml version="1 .0"?>..<string>& lt;

您知道使用二進制格式化程序時可以輕松清理Unicode字符的方法嗎? 如果是這樣,我認為這可能會起作用。

您是否嘗試過ActiveXMessageFormatter 它可能無法與它一起作為格式化程序進行編譯,我無法在此處進行測試,但可能會進行測試。

編輯:只是嘗試過,它可以編譯確定,結果是否更好,我仍然不能確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM