2012-03-26 4 views
2

MsmqIntegrationbindingでWCFを使用してMSMQにメッセージを投稿しようとしています。送信は動作しますが、キューに送信されたメッセージを確認すると動作します。エンコーディングが正しくありません。MsmqIntegrationBindingのメッセージエンコーディングを変更します。

メッセージのエンコードをUTF-16に変更することはできますか?私はすでにカスタムバインディングを使ってこれを解決しようとしました。これは私の問題を解決しませんでした。私は以下で使用したカスタムバインディングを貼り付けました。

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

答えて

2

質問は、正確にUTF-16を使用する必要があるのでしょうか?

このリンクはMSDNフォーラムから見ましたか?"How to make UTF-16 as default encoding for WCF Data Services."

ことが示唆可能な解決策として:要求と サーバーでUTF-16ヘッダには、UTF-16を使用して応答します:

クライアントが受け入れ-文字セットを送信することができます。

、受け入れポスト言う:

[...] UTF-8が UTF-16として、文字の正確な同じセットをサポートしています。したがって、UTF-16を消費するクライアントとUTF-8以外の を使用していない限り、UTF-8を超えるUTF-16を使用する必要はありません。実際には逆に には、UTF-16ペイロードは UTF-8のほぼ2倍です。

+0

問題は、キューを消費しているアプリケーションがメッセージを受け取らないということです。私はこれがメッセージのエンコーディングのためだと思った。しかし、問題はどこか他の場所に置くことができます。 msmqIntegrationBindingによって送信されているメッセージは、バイナリxmlファイルです。消費しているアプリケーションはおそらくプレーンテキストしか受け付けません。キューにプレーンテキストとしてメッセージを送信することができるかどうか知っていますか? ' Casper

+0

@Casper:あなたはこのようにカスタムバインディングを試してみたいので、バイナリ結合が、デフォルトでcustomBinding> ' しかし私はこれについて専門家ではありません。 :( –

関連する問題