Можно ли вызвать службу WCF с использованием кодировки MTOM в приложении Windows 8?

У меня есть служба WCF, конечная точка которой использует basicHttpBinding с параметром messageEncoding, установленным на Mtom. Я использую транспортную безопасность с базовыми учетными данными.

<binding name="basic" messageEncoding="Mtom">
  <security mode="Transport">
    <transport clientCredentialType="Basic" />
  </security>
</binding>

Клиент представляет собой приложение Магазина Windows 8:

BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

var client = new MyClient(binding, new EndpointAddress("https://..."));
client.ClientCredentials.UserName.UserName = "...";
client.ClientCredentials.UserName.Password = "...";

var x = await client.GetX();

Если я использую кодировку Mtom, я получаю неприятное исключение ProtocolException при вызове GetX. Если я использую текстовую кодировку, это работает.

Есть ли способ заставить сервис работать с кодировкой Mtom?


person Darrel    schedule 22.10.2012    source источник


Ответы (1)


Поддержка MTOM отсутствует в подмножестве WCF, включенном в .NET Framework для приложений Магазина Windows, поэтому простой ответ - нет - это невозможно вызвать. Более полный ответ заключается в том, что теоретически это все еще можно вызвать, но вам нужно будет написать собственный кодировщик, чтобы самостоятельно обрабатывать кодирование MTOM, что не так просто.

person carlosfigueira    schedule 22.10.2012