【发布时间】:2015-01-08 18:24:11
【问题描述】:
我正在返回一个 JsonResult 作为 Orchard CMS 站点 (MVC 4) 的一部分,但它突然停止工作(具体如下)。
这是我的控制器的一个例子:
public JsonResult GetStartDate()
{
//a previous version of this question was different here
var startDate = _Settings.DateOpen.GetValueOrDefault(DateTime.MaxValue);
if (startDate < DateTime.Now)
startDate = DateTime.Now;
var start = new
{
year = startDate.Time.Year,
month = (startDate.Time.Month - 1)
};
return Json(start, JsonRequestBehavior.AllowGet);
}
它应该返回实际数据。我已经验证了该操作正在被执行,并且“开始”在传递到 Json 方法之前包含正确的数据。
如果我直接导航到 URL,我会看到一个空白屏幕。
检查 AJAX 请求的结果显示调用失败,响应正文为空字符串,状态为“parsererror”,实际抛出的错误为“SyntaxError: Unexpected end of input”。
POST 请求因某种原因起作用,此问题仅适用于 GET。
所有 JSON GET 都有这个问题,而不仅仅是任何特定的方法。
什么可能会影响 Json 方法和接收响应的客户端之间的数据?
【问题讨论】:
-
如果从JsonResult tom ActionResult改变结果类型有什么变化吗?
-
不。但我之前确实有过改变。当前的 Chrome 突然开始接收结果。我所做的只是再次启动该站点以向某人显示它无法正常工作。 IE、Firefox 和 Chrome Canary 仍未显示。我在两个版本的 chrome 上都禁用了缓存,但没有任何变化。疯狂!
-
你的方法是否被缓存添加这个装饰器,看看它是否有什么不同[OutputCache(NoStore = true, Duration = 0)]
-
这似乎奏效了!非常感谢。如果您想编辑之前的答案,我会将其标记为已接受。
-
我已经在下面更新了我的答案。
标签: asp.net-mvc json