当前位置:  开发笔记 > 编程语言 > 正文

返回Mvc.JsonResult并设置Response.StatusCode

如何解决《返回Mvc.JsonResult并设置Response.StatusCode》经验,为你挑选了1个好方法。

项目:在.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属性,但行为没有区别)

当deployable移动到Web主机(使用IIS 7)时,firebug告诉我响应是按预期的(400)但响应中没有JSON(即没有任何类型的文本).如果我删除该行

Response.StatusCode = 400;

从动作中,JSON完美地形成在响应中,但当然响应状态代码是200(OK),这会干扰消费的javascript和适当的函数调用.

关于可能发生的事情以及如何解决这个问题的任何想法?谢谢



1> Robert..:

我有同样的问题; 为了确保评论中没有正确的答案(就像我一样),我想重申@ Sprockincat的评论:

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

Response.TrySkipIisCustomErrors = true;

@Sprockincat - 你应该得到信任.我只是让它更明显,因为它是一个非常难以诊断的问题的微妙修复.


@Robert如果我能在第二年每天为这个答案投票,我会!谢谢你!这个frikkin'问题让我在过去的12个小时内挖掘!谢谢谢谢谢谢谢谢.感谢Brent的开场白!
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有