gpt4 book ai didi

.net - 从 WCF 调用使用 ISO-8859-1 编码的 Web 服务

转载 作者:行者123 更新时间:2023-12-02 04:56:16 24 4
gpt4 key购买 nike

我正在尝试使用 WCF 调用 Web 服务,该服务使用以下编码:

<?xml version="1.0" encoding="ISO-8859-1" ?> 

我无法更改此网络服务的编码。我已经生成了一个 wcf 代理,当我尝试调用该代理时,出现以下错误:

FailedSystem.ServiceModel.ProtocolException: The content type text/xml; charset=ISO-8859-1 of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly.

有人知道如何使用 wcf 调用非 UTF-8 的 Web 服务吗?

最佳答案

不幸的是,您无法在 WCF 中开箱即用地执行此操作。

我遇到了同样的问题,并提出了一个可以使用的自定义绑定(bind)(在配置或代码中)。它基于 HTTP 传输,如果这对您有帮助,我可以在此处发布自定义配置,或向您发送指向绑定(bind)的 C# 代码的链接。

这个MSDN page here展示如何创建一个可以支持 utf-8、utf-16 和 unicode 以上编码的“CustomTextEncoder”。它包含完整的示例源代码,对我的工作非常有用。

这个blog post here显示了在尝试使自定义文本编码器正常工作时需要考虑的一些其他事项。

希望有帮助。

马克

更新:
基于我上面提到的 CustomTextEncoder 的 Microsoft 示例,您可以轻松创建具有 ISO-8859-1 文本消息编码的自定义绑定(bind) - 只需使用此配置片段(假设您已下载并编译并引用该 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>

您可以在我的 Skydrive 目录 WCF ISO 8859-1 Encoding 上找到该代码,以及基本上将整个配置包装到代码中的 ISO88591Binding 。但请注意 - 这是基于我当时的要求,例如我的服务需要与所需的 https 进行通信,以及其他一些有点奇怪的设置,因此您可能需要调整这些设置或使它们在配置中可配置(如果需要)。 ISO88591Binding”项目还包含一个 netHttpBinding,它也是 Microsoft 提供的示例,我用它来掌握在代码中编写自己的自定义绑定(bind)的技巧。

在 WCF 中编写自定义绑定(bind)绝对是可能的 - 但对于胆小的人来说则不然......

关于.net - 从 WCF 调用使用 ISO-8859-1 编码的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1908030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com