WebContentTypeMapper 示例

WCF 为内容类型提供一组默认的映射。例如,application/json 映射到 JSON,text/xml 映射到 XML。未映射到 JSON 或 XML 的任何内容类型都将映射到原始二进制格式。

在某些方案(例如推送式 API)中,服务开发人员不控制由客户端返回的内容类型。例如,客户端可以将 JSON 作为 text/javascript 而不是 application/json 返回。在这种情况下,服务开发人员必须提供从 WebContentTypeMapper 派生的类型以正确处理给定的内容类型,如下面的示例代码所示。

public class JsonContentTypeMapper : WebContentTypeMapper
{
    public override WebContentFormat
               GetMessageFormatForContentType(string contentType)
    {
        if (contentType == "text/javascript")
        {
            return WebContentFormat.Json;
        }
        else
        {
            return WebContentFormat.Default;
        }
    }
}

该类型必须重写 GetMessageFormatForContentType 方法。该方法必须计算 contentType 参数并返回下列值之一:JsonXmlRawDefault。返回 Default 时将遵从默认的 Web 消息编码器映射。在前面的示例代码中,text/javascript 内容类型映射到 JSON,所有其他映射保持不变。

若要使用 JsonContentTypeMapper 类,终结点必须使用自定义绑定。

<customBinding>
    <binding name="JsonMapper">
        <webMessageEncoding webContentTypeMapperType=
"Microsoft.Ajax.Samples.JsonContentTypeMapper, JsonContentTypeMapper, Version=3.5.0.0, Culture=neutral, PublicKeyToken=null" />
        <httpTransport manualAddressing="true" />
    </binding>
</customBinding>

若要验证使用 JsonContentTypeMapper 的要求,请在配置文件中仅用 <webMessageEncoding /> 替换前面的 <webMessageEncoding webContentTypeMapperType=。在尝试使用 text/javascript 来发送 JSON 内容时,客户端页加载将失败。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值