web api返回无效的json - 意外的令牌

时间:2014-03-18 01:02:09

标签: ajax asp.net-mvc json asp.net-web-api

我有一个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>&nbsp;</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中查看时,我可以看到它在响应中注入!

0 个答案:

没有答案