项目:在 .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/