1

我有一个 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 编码,我会在 GetX 调用中得到一个讨厌的 ProtocolException。如果我使用文本编码,它可以工作。

有什么方法可以使服务与 Mtom 编码一起工作?

4

1 回答 1

2

MTOM 支持不在 .NET Framework for Windows Store 应用程序中包含的 WCF 子集中,因此简单的答案是否定的 - 无法调用它。更完整的答案是理论上仍然可以调用它,但是您需要编写一个自定义编码器来自己处理 MTOM 编码,这不是一件容易的事。

于 2012-10-22T23:23:54.280 回答