当MVC动作返回错误状态时如何保持响应体?

时间:2017-06-02 12:18:21

标签: asp.net-mvc asp.net-mvc-4 iis asp.net-mvc-5 iis-8

我想从我的MVC控制器返回BadRequest状态和错误消息:

public class TestController : System.Web.Mvc.Controller
{
    public ActionResult Bad()
    {
        Response.StatusCode = 400;
        return new JsonResult()
        {
            Data = new { Message = "Request is bad!" },
            JsonRequestBehavior = JsonRequestBehavior.AllowGet
        };
    }
}

当我在IISExpress中启动应用程序时,该方法返回响应正文:

{"Message":"Request is bad!"}

但是,当我将同一站点部署到IIS(版本8.5)时,响应主体更改为:

Bad Request

为什么会这样?是否有一些设置允许在状态不是200时保持响应正文?

1 个答案:

答案 0 :(得分:1)

我找到了两个解决方案:

  1. Response.TrySkipIisCustomErrors设为true。
  2. httpErrors
  3. 中将existingResponse设为PassThrough