json - 返回 Mvc.JsonResult 加上设置 Response.StatusCode

项目:在 .net 4.0 框架下运行的 ASP MVC 4:

在 VS 2010 express 下运行应用程序(或在我的本地计算机上部署和运行在 IIS 7.5 下)时,操作的以下(伪代码)结果按预期工作

[HttpPost]
public ActionResult PostWord(Model model)
{
   ....
   Response.StatusCode = 400;
   Return new JsonResult { data = new {fieldName = "Word", error = "Not really a word!" } };

(并且我已经分配了 JsonResult 对象的 ContentType 和 ContentEncoding 属性,行为上没有区别)

当可部署对象移动到 Web 主机(使用 IIS 7)时,firebug 告诉我响应符合预期(400),但响应中没有 JSON(即没有任何类型的文本)。如果我删除该行

Response.StatusCode = 400;

从 Action 来看,响应中完美形成了JSON,但是响应状态码当然是200(OK),这会干扰消费javascript和适当的函数调用。

对可能发生的情况以及如何解决此问题有任何想法吗?谢谢

最佳答案

我遇到了同样的问题;为了确保正确的答案不会被埋没在评论中(就像对我一样),我想重申@Sprockincat 的评论:

至少对我来说,这确实是 IIS 自定义错误的问题,可以通过以下方式解决:

Response.TrySkipIisCustomErrors = true;

@Sprockincat - 你应该为此获得荣誉。我只是让它更明显,因为它是对一个很难诊断的问题的微妙修复。

https://stackoverflow.com/questions/17183004/

相关文章:

php - 在 Laravel 4 中将 Eloquent 模型返回为 JSON

json - 对于 Restful API,GET 方法可以使用 json 数据吗?

json - 使用 d3.json 导入本地 json 文件不起作用

ruby-on-rails - 什么是 JSON 八位组,为什么需要两个?

java - 将 JSONObject 转换为 Map

json - Jackson json反序列化,忽略json中的根元素

java - @JsonUnwrapped 的 Jackson 反序列化等价物是什么?

json - 如何解析嵌套 JSON 对象中的内部字段

python - 用 json 编码元组的最佳方法

json - 在 JSON 中禁用超文本应用程序语言 (HAL)?