Изменить кодировку сообщения MsmqIntegrationBinding
Я пытаюсь опубликовать сообщение на MSMQ, используя WCF с привязкой MsmqIntegrationbinding. Отправка работает, но когда я смотрю на сообщение, которое было отправлено в очередь. Кодировка неверна.
Можно ли изменить кодировку сообщения на UTF-16? Я уже пытался решить эту проблему с помощью пользовательского связывания. Это не решило мою проблему. Я вставил пользовательскую привязку, которую использовал ниже.
<binding name="CustomMsmqIntegrationBinding">
<textMessageEncoding messageVersion="None" writeEncoding="utf-16" />
<msmqIntegration exactlyOnce="true">
<msmqTransportSecurity msmqAuthenticationMode="None" msmqProtectionLevel="None" />
</msmqIntegration>
</binding>
1 ответ
Вопрос в том, есть ли у вас причина, которая заставляет вас использовать именно 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.