Ответ 1
Вы не можете сделать это из коробки в WCF - к сожалению.
Я столкнулся с той же проблемой и придумал настраиваемую привязку (либо в конфигурации, либо в коде), которую вы можете использовать. Он основан на HTTP-транспорте, и если это поможет вам, я могу опубликовать пользовательскую конфигурацию здесь или отправить вам ссылку на код С# для привязки.
Эта страница MSDN здесь показывает, как создать "CustomTextEncoder", который может поддерживать больше, чем кодировки utf-8, utf-16 и unicode. Он включает в себя полный образец исходного кода и очень полезен для меня, чтобы все было в порядке.
Надеюсь, что это поможет.
Марк
UPDATE:
На основе образца Microsoft, упомянутого выше для CustomTextEncoder, вы можете легко создать пользовательскую привязку с кодировкой текстового сообщения ISO-8859-1 - просто используйте этот фрагмент конфигурации (при условии, что вы скачали и скомпилировали и ссылались на этот образец Microsoft):
<system.serviceModel>
<extensions>
<bindingElementExtensions>
<add name="customTextMessageEncoding"
type="Microsoft.ServiceModel.Samples.CustomTextMessageEncodingElement,
Microsoft.ServiceModel.Samples.CustomTextEncoder"/>
</bindingElementExtensions>
</extensions>
<bindings>
<customBinding>
<binding name="ISO8859Binding" >
<customTextMessageEncoding encoding="ISO-8859-1" />
<httpTransport />
</binding>
</customBinding>
</bindings>
<client>
<endpoint name="Test"
address="......."
binding="customBinding"
bindingConfiguration="ISO8859Binding"
contract="IYourContract" />
</client>
</system.serviceModel>
Вы можете найти этот код плюс ISO88591Binding
, который в основном переносит всю эту конфигурацию в код, в мой каталог Skydrive WCF ISO 8859-1 Encoding. Однако будьте осторожны - это основано на моих требованиях, которые у меня были в то время, например. мой сервис, мне нужно было поговорить с требуемыми https, а также некоторыми другими немного странными настройками, поэтому вам может потребоваться настроить их или настроить их в конфигурации, если это необходимо. Этот проект ISO88591Binding также содержит netHttpBinding, который снова является образцом, предоставленным Microsoft, который я использовал, чтобы получить возможность писать собственную привязку в коде.
Написание пользовательской привязки в WCF определенно возможно - но не для слабого сердца....