如何从ASP.NET MVC 3设置HTTP状态代码?(How to set HTTP status

2019-06-27 07:55发布

我们使用的前端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

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

我制作的呼叫URL结构很简单:/主/性TestError / 400

Answer 1:

还有就是在扩展讨论什么是到从ASP.NET MVC操作的HTTP 404响应的正确方法?

你想要做的是设置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);
}


Answer 2:

如果你想返回的错误代码,你可以做到以下几点:

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); 


Answer 3:

如果你不能让你的JSON结果到您的视图,尝试添加此:

Response.TrySkipIisCustomErrors = true;

在这之前 :

Response.StatusCode = 400;

对这个职位的更多细节: https://stackoverflow.com/a/37313866/9223103



文章来源: How to set HTTP status code from ASP.NET MVC 3?