WCF SOAP 服务忽略内容类型字符集
Posted
技术标签:
【中文标题】WCF SOAP 服务忽略内容类型字符集【英文标题】:WCF SOAP Service Ignore Content-Type charset 【发布时间】:2017-11-25 15:54:39 【问题描述】:我有一个新的 WCF 服务,一些现有客户端需要能够与之通信。
有些客户端错误地发送了 Content-Type 标头为 'text/xml; 的 SOAP 请求;字符集=us-ascii'。目前,客户本身无法更改。
当他们发送请求时,他们会收到错误消息:
HTTP/1.1 415 无法处理消息,因为内容类型 '文本/xml; charset=us-ascii' 不是预期的类型 'text/xml; 字符集=utf-8'
有什么方法可以指示 WCF 服务忽略 Content-Type 的字符集并假定为 utf-8?
【问题讨论】:
或许social.msdn.microsoft.com/Forums/vstudio/en-US/… docs.microsoft.com/en-us/dotnet/framework/wcf/extending/… @KScandrett 这个,加上与该论坛帖子上已接受答案的作者的对话就成功了。 很高兴有帮助。不要忘记为可能遇到类似问题的其他人发布并接受您的答案 【参考方案1】:这可能对您有帮助,如果没有,我将删除答案。我认为这可以在您的上下文中使用,但不太确定,因为没有其他细节。
WebContentTypeMapper 可用于覆盖正在发送的内容类型。这是 WCF 示例集中使用的代码的片段。在此示例中,它接收发送的任何内容类型并将其映射到 json,但您可以根据需要进行调整。
如果您还没有,可以从WCF Samples 下载示例 此示例位于 ..WF_WCF_Samples\WCF\Extensibility\Ajax\WebContentTypeMapper\CS
using System.ServiceModel.Channels;
namespace Microsoft.Samples.WebContentTypeMapper
public class JsonContentTypeMapper : System.ServiceModel.Channels.WebContentTypeMapper
public override WebContentFormat GetMessageFormatForContentType(string contentType)
if (contentType == "text/javascript")
return WebContentFormat.Json;
else
return WebContentFormat.Default;
【讨论】:
以上是关于WCF SOAP 服务忽略内容类型字符集的主要内容,如果未能解决你的问题,请参考以下文章
忽略特定 WCF OperationContracts 的内容类型