如何从ASP.NETMVC 3设置HTTP状态代码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我们在前端使用OpenWeb js库,并且他们需要.NET中间层在发生某些类型的错误时向它们发送特定的HTTP头状态代码。我试图通过这样做来实现这一点:

public ActionResult TestError(string id) // id = error code
{
    Request.Headers.Add("Status Code", id);
    Response.AddHeader("Status Code", id);
    var error = new Error();
    error.ErrorID = 123;
    error.Level = 2;
    error.Message = "You broke the Internet!";

    return Json(error, JsonRequestBehavior.AllowGet);
}

它有点中途工作。看截图: http状态代码http://zerogravpro.com/temp/pic.png

注意我在Response Header中实现了400的状态码,但我真的需要请求头中的400。相反,我得到“200 OK”。我怎样才能做到这一点?

我的URL调用结构很简单:/ Main / TestError / 400

提问于
用户回答回答于

你想要做的是设置Response.StatusCode而不是添加标题。

public ActionResult TestError(string id) // id = error code
{
    Response.StatusCode = 400; // Replace .AddHeader
    var error = new Error();  // Create class Error() w/ prop
    error.ErrorID = 123;
    error.Level = 2;
    error.Message = "You broke the Internet!";

    return Json(error, JsonRequestBehavior.AllowGet);
}
用户回答回答于

如果想要返回的是错误代码,则可以执行以下操作:

public ActionResult TestError(string id) // id = error code 
{ 
      return new HttpStatusCodeResult(id, "You broke the Internet!");
}

参考:关于Mvc.HttpStatusCodeResult的MSDN文章

否则,如果你想返回其他信息使用

Response.StatusCode = id

代替

Response.AddHeader("Status Code", id); 

扫码关注云+社区