How to set HTTP status code from ASP.NET MVC 3?

前端 未结 3 874
春和景丽
春和景丽 2020-12-15 02:34

We\'re using OpenWeb js libraries on the frontend, and they have a need for the .NET middle tier to send them a specific HTTP header status code when certain types of errors

相关标签:
3条回答
  • 2020-12-15 03:01

    If all you want to return is the error code, you could do the following:

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

    Reference: MSDN article on Mvc.HttpStatusCodeResult.

    Otherwise, if you want to return other information use

    Response.StatusCode = id
    

    instead of

    Response.AddHeader("Status Code", id); 
    
    0 讨论(0)
  • 2020-12-15 03:11

    There is extended discussion at What is the proper way to send an HTTP 404 response from an ASP.NET MVC action?

    What you want to do is set Response.StatusCode instead of adding a Header.

    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);
    }
    
    0 讨论(0)
  • 2020-12-15 03:22

    If you can't get your json result into your view, try to add this :

    Response.TrySkipIisCustomErrors = true;
    

    Before this :

    Response.StatusCode = 400;
    

    More details on this post : https://stackoverflow.com/a/37313866/9223103

    0 讨论(0)
提交回复
热议问题