我们在前端使用HTTP库,当某些类型的错误发生时,它们需要.NET中间层向它们发送特定的header状态代码。我试图通过这样做来实现这个目标:
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 status code http://zerogravpro.com/temp/pic.png
请注意,我在响应头中获得了状态码400,但我确实需要请求头中的400。取而代之的是,我得到了"200 OK“。我如何才能做到这一点?
我进行调用的URL结构很简单: /Main/TestError/400
发布于 2012-08-24 23:43:46
在What is the proper way to send an HTTP 404 response from an ASP.NET MVC action?上有更广泛的讨论
您要做的是设置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);
}
发布于 2012-08-24 23:39:48
如果您只想返回错误代码,则可以执行以下操作:
public ActionResult TestError(string id) // id = error code
{
return new HttpStatusCodeResult(id, "You broke the Internet!");
}
参考:MSDN article on Mvc.HttpStatusCodeResult。
否则,如果要返回其他信息,请使用
Response.StatusCode = id
而不是
Response.AddHeader("Status Code", id);
发布于 2018-01-16 16:48:14
如果你不能把你的json结果放到你的视图中,试着添加这个:
Response.TrySkipIisCustomErrors = true;
在此之前:
Response.StatusCode = 400;
关于这篇文章的更多详细信息:https://stackoverflow.com/a/37313866/9223103
https://stackoverflow.com/questions/12112361
复制相似问题