c# - 如何拦截来自 WCF 客户端的 header ...?

标签 c# wcf magento header content-type

因此,我使用了为我提供的 wsdl 来生成 WCF 的所有基本客户端代码。当我尝试与该服务通信时,出现错误。该错误表明绑定(bind)的内容类型与响应消息的内容类型不匹配。

启动 Fiddler 后,我查看了发出和返回的原始数据。事实证明,我尝试与之通信的 Magento 服务器返回了两个 Content-Type 值。再次,使用 Fiddler,我强制只使用一种 Content-Type 来响应我的客户端,并且效果很好。

现在,我只想让 Magento 服务器正确响应,因为这将是此问题的“正确”解决方案。然而,这是我无法控制的(不同的公司不想修复它)。因此,我需要在 WCF 获取 header 时拦截 header 并让它忽略重复项。在互联网上搜索了一段时间后,我仍在尝试找出“最佳”方法。或“任何”方式来做到这一点,就此而言。

有人能够指出我要覆盖的正确内容以及我需要做什么来删除多余的内容类型吗?

最佳答案

您应该能够实现 IClientMessageInspectorAfterReceiveReply 方法中操作并删除从 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/

相关文章:

c# - 如何在 .NET 中以编程方式为图像的透明部分着色

c# - 如何处理窗体的 KeyPress 事件?

wcf - WCF客户端使用username_token和消息保护客户端策略将消息加密到JAVA WS的消息

Magento:使用 PNG 更改默认产品图片

css - 如何使用 styles.css 调用静态 block

php - 将使用 PayPal 支付的 Magento 中不接受的货币转换为美元

c# - 获取 session 值 - ASP.NET Web 处理程序文件

c# - 在同一解决方案中的 vdproj 预构建事件中更改 csproj 程序集信息中的产品名称

wcf - NHibernate和WCF : Performance (session reuse) vs.并发(同时请求)

.net - 来自不同客户端的调用之间未清除 WCF AuthorizationContext。 (原为 : When does a WCF service session actually end? )