我正在尝试使用 webHttpBinding 用 WCF 替换旧的 REST/plain 旧 xml Web 服务。它必须与现有客户端向后兼容——当前不在请求中发送内容类型标头。
当我将客户指向我的新 Web 服务时,我收到 HTTP ERROR 415 - 缺少内容类型。
是否可以配置 WCF,使其接受没有内容类型标头的原始请求?
我正在尝试使用 webHttpBinding 用 WCF 替换旧的 REST/plain 旧 xml Web 服务。它必须与现有客户端向后兼容——当前不在请求中发送内容类型标头。
当我将客户指向我的新 Web 服务时,我收到 HTTP ERROR 415 - 缺少内容类型。
是否可以配置 WCF,使其接受没有内容类型标头的原始请求?
415 不是“缺少内容类型”,它是415 Unsupported Media Type。这表明服务器正在接收内容类型,它只是不知道如何处理它。根据 HTTP 规范,证明内容类型是应该的。不是必须的,所以 WCF 应该接受没有内容类型的请求。如果没有,也许您想考虑使用较新的WCF Web API,因为它们确实遵循 HTTP 规范并允许您在没有内容类型标头的情况下传递内容。
更新:
显然这是 .Net 框架早期版本中的一个错误,并且有一个解决方法/修复https://connect.microsoft.com/wcf/feedback/details/475964/content-type-header-validated-at-the-传输级而不是应用程序级和 trows-a-415 异常
在 .net 3.5 下,答案是否定的。似乎内容类型在传输层而不是应用程序层被错误地验证。解决此问题的唯一方法是将自定义绑定与自定义 HtppTransportChannel 一起使用。
此错误已在 .net 4.0 中修复