2012-03-26 4 views
2

Ich versuche, eine Nachricht auf einem MSMQ mit WCF mit einer MsmqIntegrationbinding zu senden. Das Senden funktioniert, aber wenn ich die Nachricht ansehe, die an die Warteschlange gesendet wurde. Die Codierung ist falsch.Ändern Sie die Nachrichtencodierung von MsmqIntegrationBinding

Ist es möglich, die Nachrichtencodierung in UTF-16 zu ändern? Ich habe bereits versucht, dies mit einer benutzerdefinierten Bindung zu lösen. Das hat mein Problem nicht gelöst. Ich habe die benutzerdefinierte Bindung eingefügt, die ich unten verwendet habe.

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

Antwort

2

Die Frage ist, haben Sie einen Grund, der Sie zwingt UTF-16 genau zu verwenden?

Haben Sie diesen Link in den MSDN-Foren gesehen: "How to make UTF-16 as default encoding for WCF Data Services."?

Als eine mögliche Lösung, die es schon sagt:

Der Kunde kann Accept-Charset senden: in der Anfrage und der Server UTF-16 verwenden reagieren utf-16-Header.

Und die akzeptierte Post sagt:

[...] UTF-8 genau die gleiche Menge von Zeichen als UTF-16 unterstützt. Wenn Sie also keinen Client haben, der nur UTF-16 und nicht UTF-8 konsumieren kann, sollte es keinen Grund geben, UTF-16 über UTF-8 zu verwenden. Zu der Gegenteil tatsächlich, UTF-16-Nutzlasten sind fast 2 mal größer als UTF-8.

+0

Das Problem, das ich habe, ist, dass die Anwendung, die die Warteschlange verbraucht, die Nachrichten nicht abholen wird. Ich dachte, dies sei wegen der Kodierung der Nachricht. Das Problem kann jedoch woanders liegen. Die Nachricht, die von der MsmqIntegrationBinding gesendet wird, ist eine binäre XML-Datei. Die konsumierende Anwendung akzeptiert wahrscheinlich nur reinen Text. Weißt du, ob es möglich ist, die Nachricht als Klartext an die Warteschlange zu senden? – Casper

+0

@Casper: Die binäre Bindung ist Standard, so dass Sie eine benutzerdefinierte Bindung so versuchen: ' ' Aber ich bin kein Experte in diesem. :( –

Verwandte Themen