C# JSON响应不再包含“d”!!!asp.net 4.5

C# JSON响应不再包含“d”!!!asp.net 4.5,c#,asp.net,json,scriptservice,C#,Asp.net,Json,Scriptservice,我有一个问题,我们正在将asp.net 3.5转换为asp.net 4.5 在这期间,我们遇到了很多问题 但是现在。。。我们终于把它装得太重了 现在,我在服务的JSON响应中出现了奇怪的行为 它们不再含有d了 {d: "response from server"} 现在 {"response from server"} 这破坏了回调的javascript代码,你知道吗?或者解释如果要在返回结果时命名变量,则需要正确序列化它 如果您返回一个字符串,您将得到{your string},但是如果您

我有一个问题,我们正在将asp.net 3.5转换为asp.net 4.5 在这期间,我们遇到了很多问题 但是现在。。。我们终于把它装得太重了 现在,我在服务的JSON响应中出现了奇怪的行为 它们不再含有d了

{d: "response from server"}
现在

{"response from server"}

这破坏了回调的javascript代码,你知道吗?或者解释

如果要在返回结果时命名变量,则需要正确序列化它

如果您返回一个字符串,您将得到{your string},但是如果您返回一个对象,或者在4.5中返回一个类型为dynamic的任务,或者更好的类型为'your object'的任务,您将得到完全序列化的对象

return new { 
   result = "here is your result", 
   code  = "here is your code"
}

行为发生了变化,因为Microsoft从使用DataContractJsonSerializer切换到了Json.NET NewtonSoft。

OP没有询问如何序列化。他/她正在询问行为的改变。不,我正在Asp.net 4.5中使用Asp.net Ajax。我想知道为什么它的行为与早期版本3.5有所不同,您能提供一个复制这种行为的示例应用程序吗?这种行为不应该在3.5和4.5之间改变,我不能在我自己的盒子上重新编程。这是4.5解决方案-你会看到没有结果。d。您可以在这里下载,在我们的机器上,行为似乎仍然是正确的。MS AJAX总是在调用回调之前打开d参数。当您从3.5升级到4.5时,项目中还有什么变化吗?例如,您是依赖于新的JavaScript库还是依赖于现有库的不同版本?