我们目前正在使用.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等效项。
感谢您的帮助。
答案 0 :(得分:3)
一种方法是使用Carlos Figueria描述的WCF raw programing model与JSON.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
并自己做所有事情 - 而不是有趣。