C# 禁用WCF JSON服务中的类型暗示

C# 禁用WCF JSON服务中的类型暗示,c#,.net,wcf,json,serialization,C#,.net,Wcf,Json,Serialization,我有一个相对简单的问题,我似乎找不到答案 当WCF执行对象序列化时,它会自动应用类型暗示。对于Json服务,这会在每个复杂对象上产生一个名为\uuu type的额外字段。定义为: [DataContract] public class SomeObject { [DataMember] public string First { get; set; } [DataMember] public string Last { get; set; } } 将序列化为以

我有一个相对简单的问题,我似乎找不到答案

当WCF执行对象序列化时,它会自动应用类型暗示。对于Json服务,这会在每个复杂对象上产生一个名为
\uuu type
的额外字段。定义为:

[DataContract]
public class SomeObject
{
    [DataMember]
    public string First { get; set; }

    [DataMember]
    public string Last { get; set; }
}
将序列化为以下内容:

{
    "First" : "Hello",
    "Last" : "World!",
    "__type" : "SomeObject#MyNamespace.SomeObject"
}
通常这不是问题。不幸的是,当您开始将类嵌套到相当大和复杂的结构中时,这会导致返回到客户端的JSON响应的大小产生大量开销


当然,必须有一种方法来禁用这种行为,但我还没有找到(也没有……但现在是2010年,我希望有人已经解决了这个问题)。

使用
DataContractJsonSerializer
将希望这样做以支持多态性并能够反序列化回已知类型。NewtonSoft是第三方json序列化程序,不会添加_类型提示。如果您只是序列化而没有使用真正的Advanced DataContract属性,您可能想尝试一下。

我假设您在行为配置中使用了
,将其替换为
,您将得到漂亮干净的json

这对我来说很有帮助:

[WebGet(ResponseFormat=WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Bare)]
请参见中的步骤7和10

这对我也有效-我还必须将svc文件上的工厂从WebScriptserviceHostFactory更改为WebServiceHostFactory。这对我无效。我已经按照说明设置了我的app.config,但仍然收到
\u类型
porpertyth当我在.NET 3.5SP1中尝试它时失败了。这可能是4.0版本吗?我只在4上试过,但似乎在文档“defaultOutgoingResponseFormat属性是不允许的”中,我一直在寻找摆脱“u类型”的解决方案。这对我来说太完美了,谢谢!我正在控制台(不是ASP.Net)上使用WCF。。。这对我不起作用,“\u类型”仍然会出现