我有一个web api2控制器返回一组复杂类型。
这个设置已经工作了一段时间,直到它今天开始窒息。
看来其中一个对象(122个中的对象)现在正在破坏客户端上的JSON.parse。
Fiddler也无法解析JSON。只要我跳过“坏”对象,就会返回有效的JSON。
这是破解响应的标题:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcZGV2XEJTR1xBcHBzXENhbXBGb3JjZVx0cnVua1xQZXJtYWwuQlNHLkNhbXBGb3JjZS5XZWJcYXBpXGNhbXBcdGVtcGxhdGVz?=
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Tue, 18 Mar 2014 00:50:14 GMT
Content-Length: 1312
如果我查看客户端上的序列化对象字符串,并将其粘贴到jsonLint中,则指向此区域:
"HtmlValue": "<html>\n\n<body...
这与所有“好”的物品看起来几乎相同..所以我有点难过。
由于web api将响应编码为JSON,为什么它会允许破坏字符?
更新
这是破解json(我在反序列化之前在客户端上检索它:
[
{
"$id": "1",
"Id": "00Xg0000000MBGoEAO",
"Name": "Template Test",
"Body": null,
"HtmlValue": "<html>\n\n<body lang=EN-US style='tab-interval:.5in'>\n\n<div class=Section1>\n\n<p class=MsoNormal><span class=SpellE><span style='font-size:20.0pt;line-height:\n115%;font-family:\"Franklin Gothic Book\",\"sans-serif\"'></span></span><span\nstyle='font-size:20.0pt;line-height:115%;font-family:\"Franklin Gothic Book\",\"sans-serif\"'><o:p></o:p></span></p>\n\n<p class=MsoNormal>testing </p>\n\n<p class=MsoNormal><o:p> </o:p></p>\n\n</div>\n\n
<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
{"appName":"Chrome"}
</script>
<script type="text/javascript" src="http: //localhost: 61319/6cd9cb905b1e4b5bb51cb5a36ea0bd17/browserLink" async="async"></script>
<!-- End Browser Link -->
</body>\n\n</html>",
"Subject": "Test",
"IsActive": true
}
]
情节变浓了。
这部分正在注入HTML属性
<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
{"appName":"Chrome"}
</script>
<script type="text/javascript" src="http: //localhost: 61319/6cd9cb905b1e4b5bb51cb5a36ea0bd17/browserLink" async="async"></script>
<!-- End Browser Link -->
当我单步执行服务器上的代码时,此剪切不存在,但当我在fiddler中查看时,我可以看到它在响应中注入!