因此,我使用了为我提供的 wsdl 来生成 WCF 的所有基本客户端代码。当我尝试与该服务通信时,出现错误。该错误表明绑定(bind)的内容类型与响应消息的内容类型不匹配。
启动 Fiddler 后,我查看了发出和返回的原始数据。事实证明,我尝试与之通信的 Magento 服务器返回了两个 Content-Type 值。再次,使用 Fiddler,我强制只使用一种 Content-Type 来响应我的客户端,并且效果很好。
现在,我只想让 Magento 服务器正确响应,因为这将是此问题的“正确”解决方案。然而,这是我无法控制的(不同的公司不想修复它)。因此,我需要在 WCF 获取 header 时拦截 header 并让它忽略重复项。在互联网上搜索了一段时间后,我仍在尝试找出“最佳”方法。或“任何”方式来做到这一点,就此而言。
有人能够指出我要覆盖的正确内容以及我需要做什么来删除多余的内容类型吗?
最佳答案
您应该能够实现 IClientMessageInspector
在 AfterReceiveReply
方法中操作并删除从 Magento 服务器收到的响应中多余的 Content-Type。
编辑:
因此,您可以通过
中提供的HttpResponseMessageProperty
访问收到的响应中的 HTTP header
void IClientMessageInspector.AfterReceiveReply(ref Message reply, Object correlationState)
{
var prop =
reply.Properties[HttpResponseMessageProperty.Name] as HttpResponseMessageProperty;
if (prop != null)
{
// get the content type headers
var contentType = prop.Headers["Content-Type"];
}
}
但是,Content-Type appears to be a restricted header 。也许一点思考可以解决这个问题,但希望这能给您一些想法。
关于c# - 如何拦截来自 WCF 客户端的 header ...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8735083/