当 MVC 操作 returns 错误状态时如何保持响应主体?

How to keep response body when MVC action returns error status?

我想 return BadRequest 来自我的 MVC 控制器的状态和错误消息:

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 中启动应用程序时它起作用,方法 returns 响应正文:

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

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

Bad Request

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

我找到了两个解决方案:

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