我有一个RESTful WCF Web服务,它处理巨大的XML文件,这些文件使用POST方法作为带有Header Content-Type:text/text的Stream传入.当客户端尝试将此Web服务与Header Content-Type:text/xml一起使用时,它们会收到"...包含无法识别的http正文格式值'Xml'.预期的正文格式值为'Raw'.这可以因为尚未在绑定"错误上配置WebContentTypeMapper.我的任务是使这个Web服务使用Header Content-Type:text/xml,因为众多客户将此Web服务与其他服务一起使用,并且不希望仅为此服务更改内容类型.如何将传入的流映射为WebContentFormat.Raw并使此Web服务接受Content-Type:text/xml?谢谢.
我通过创建一个派生自WebContentTypeMapper的新类并在Content-Type ='text/xml'时将WebContentFormat更改为'Raw'来解决了这个问题.除了这个新类,我更新了web.config以使用'bindings'下的'customBinding'元素.
public class XmlContentTypeMapper : WebContentTypeMapper { public override WebContentFormat GetMessageFormatForContentType(string contentType) { if (contentType.Contains("text/xml") || contentType.Contains("application/xml")) { return WebContentFormat.Raw; } else { return WebContentFormat.Default; } } }
web.config中