用于WCF服务的自定义序列化转换器

时间:2009-04-30 15:00:01

标签: .net ajax wcf serialization asmx

我们目前正在使用.asmx Web服务方法,该方法将我们的对象序列化为Json,以返回给客户端并由MS Ajax代码使用。对于对象的某些成员,我们通过从JavaScriptConverter派生的类使用自定义转换器并覆盖Serialize方法。我们通过以下元素在web.config中“连接”这些自定义转换器:

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="2000000">
        <converters>
          <add name="ElementReference" type="OurNamespace.OurJavascriptConverter">

我们现在正在转换到WCF Web服务。我无法找到WCF等效项。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

一种方法是使用Carlos Figueria描述的WCF raw programing modelJSON.NET的组合。

我发现JSON.NET比WCF JSON序列化器更加灵活和可配置。

答案 1 :(得分:2)

这可能是您正在寻找的http://blogs.msdn.com/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx

虽然它谈论REST,但不确定你是否以这种方式使用WCF。可能会有用,请查看。

答案 2 :(得分:0)

默认情况下,WCF在basic-http模式下使用DataContractSerializer,在某些二进制tcp模式下使用NetDataContractSerializer。您无法为每个类型/属性注入转换器,但您可以通过向合同添加“行为”(两端)来替换序列化程序。虽然可能,但这不是很便携,建议您坚持使用常规布局,以便“mex”能够正确理解事物。

See here有关此类行为的示例。

AFAIK,最有可能替代(用于自定义序列化)将实现IXmlSerializable并自己做所有事情 - 而不是有趣。