【问题标题】:Change the message encoding of MsmqIntegrationBinding更改 MsmqIntegrationBinding 的消息编码
【发布时间】:2012-04-09 22:24:37
【问题描述】:

我正在尝试使用带有 MsmqIntegrationbinding 的 WCF 在 MSMQ 上发布消息。发送有效,但是当我查看已发送到队列的消息时。编码不正确。

是否可以将消息编码更改为 UTF-16?我已经尝试使用自定义绑定来解决这个问题。这并没有解决我的问题。我粘贴了我在下面使用的自定义绑定。

<binding name="CustomMsmqIntegrationBinding">   
   <textMessageEncoding messageVersion="None" writeEncoding="utf-16" />
   <msmqIntegration exactlyOnce="true">
      <msmqTransportSecurity msmqAuthenticationMode="None" msmqProtectionLevel="None" />
   </msmqIntegration>
</binding>

【问题讨论】:

    标签: c# .net wcf msmq msmqintegrationbinding


    【解决方案1】:

    问题是,您是否有理由强制您完全使用 UTF-16?

    您是否在 MSDN 论坛中看到过此链接:"How to make UTF-16 as default encoding for WCF Data Services."

    作为一种可能的解决方案,它建议:

    客户端可以在请求中发送 Accept-Charset: utf-16 header 和 服务器将使用 UTF-16 响应。

    接受的帖子说:

    [...] UTF-8 支持的字符集与 UTF-16。所以除非你有一个只能使用 UTF-16 和 不是 UTF-8,应该没有理由使用 UTF-16 而不是 UTF-8。到 相反,实际上 UTF-16 有效载荷几乎是 UTF-16 的 2 倍 UTF-8。

    【讨论】:

    • 我遇到的问题是使用队列的应用程序不会接收消息。我认为这是因为消息的编码。不过,问题可能出在其他地方。 msmqIntegrationBinding 发送的消息是一个二进制 xml 文件。消费应用程序可能只接受纯文本。你知道是否可以将消息作为纯文本发送到队列?
    • @Casper:二进制绑定是默认的,所以你想试试这样的自定义绑定:&lt;customBinding name="msmqText"&gt; &lt;msmqTransport ... /&gt; &lt;textMessageEncoding ... /&gt; &lt;/customBinding&gt; 但我不是这方面的专家。 :(
    猜你喜欢
    • 1970-01-01
    • 2012-01-26
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多