2011-12-27 3 views
0

Как я могу указать кодировку сообщений для входящих сообщений в клиенте WCF на основе кодировки сообщения в ответном сообщении с сервера?Как я могу указать кодировку сообщений для входящих сообщений в клиенте WCF на основе кодировки сообщения в ответном сообщении с сервера?

Сервер может отправлять ответ с кодировкой текстового сообщения или MTOM?

Как это можно определить и, соответственно, как я могу указать кодировку сообщения на клиенте после получения ответа от сервера.

ответ

0

Если вы хотите изменить кодировку сообщения, вам необходимо определить конфигурацию привязки - выберите, какое бы соединение вы не используете, и укажите, что вы хотите, например. MTOM кодирование:

<bindings> 
    <wsHttpBinding> 
    <binding name="MTOM" messageEncoding="Mtom" /> 
    </wsHttpBinding> 
</bindings> 

Тогда в конечных точках как на сервере и клиенте (они должны выстраиваться и определить то же самое!), Вы должны использовать эту конфигурацию связывания:

<service name="test" > 
    <endpoint name="test" 
     address="" 
     binding="wsHttpBinding" 
     bindingConfiguration="MTOM" 
     contract="IYourService" /> 
    </service> 

Вы должны установить это как на клиенте, так и на сервере - вам нужно заранее решить, использовать или не использовать MTOM-кодировку (вместо обычной текстовой кодировки).

+0

Спасибо, но у меня другой запрос. Могу ли я узнать кодировку ответа от сервера до того, как сообщение действительно будет декодировано, и чтобы я мог использовать подходящую конечную точку с той же кодировкой на стороне клиента, что и для ответа на сервере. –

+0

@klra: Я попытался объяснить это: ** нет ** вы не можете этого сделать - вам нужно решить ** раньше времени **, когда вы настраиваете службы, какие кодировки будут использоваться на каких конечных точках. Вы не можете «волшебным образом» обнаружить, что для каждого сообщения - его нужно решить и настроить. –

+0

ОК, можем ли мы по крайней мере определить кодировку сообщения входящего сообщения на любом уровне со стороны клиента или на стороне сервера? –