Изменить кодировку сообщения MsmqIntegrationBinding - PullRequest
2 голосов
/ 26 марта 2012

Я пытаюсь опубликовать сообщение в MSMQ, используя WCF с привязкой MsmqIntegration. Отправка работает, но когда я смотрю на сообщение, которое было отправлено в очередь. Кодировка неверна.

Можно ли изменить кодировку сообщения на UTF-16? Я уже пытался решить эту проблему с помощью пользовательского связывания. Это не решило мою проблему. Я вставил пользовательскую привязку, которую использовал ниже.

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

1 Ответ

2 голосов
/ 26 марта 2012

Вопрос в том, есть ли у вас причина, которая заставляет вас точно использовать UTF-16?

Вы видели эту ссылку на форумах MSDN: "Как сделать UTF-16 кодировкой по умолчанию для служб данных WCF." ?

В качестве возможного решения предлагается:

Клиент может отправить в запросе заголовок Accept-Charset: utf-16 и сервер ответит с использованием UTF-16.

А в принятом посте написано:

[...] UTF-8 поддерживает тот же набор символов, что и UTF-16. Так что, если у вас нет клиента, который может использовать только UTF-16 и не UTF-8 не должно быть никаких причин использовать UTF-16 вместо UTF-8. К наоборот, полезная нагрузка UTF-16 почти в 2 раза больше, чем UTF-8.

...