我们使用的前端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
还有就是在扩展讨论什么是到从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);
}
如果你想返回的错误代码,你可以做到以下几点:
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);
如果你不能让你的JSON结果到您的视图,尝试添加此:
Response.TrySkipIisCustomErrors = true;
在这之前 :
Response.StatusCode = 400;
对这个职位的更多细节: https://stackoverflow.com/a/37313866/9223103