我试着用这个:
return Request.CreateResponse(HttpStatusCode.InternalServerError, "My message");
我也试过这个:
return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "My message");
但我在浏览器上看到500错误,但显示的是“我的消息”之类的消息。
答案 0 :(得分:8)
要使用ASP.NET MVC控制器中的消息返回特定的响应代码,请使用:
return new HttpStatusCodeResult(errorCode, "Message");
确保控制器中的方法是ActionResult类型,而不是ViewResult。
答案 1 :(得分:0)
我有一个ErrorController可以帮助我抛出错误并显示一个很好的错误页面,使用Response.StatusCode
来返回不同的StatusCode
namespace Site.Controllers {
[OutputCache(Location = OutputCacheLocation.None)]
public class ErrorController : ApplicationController {
public ActionResult Index() {
ViewBag.Title = "Error";
ViewBag.Description = "blah blah";
return View("Error");
}
public ActionResult HttpError404(string ErrorDescription) {
Response.StatusCode = 404;
ViewBag.Title = "Page not found (404)";
ViewBag.Description = "blah blah";
return View("Error");
}
...
}
}
编辑为了将仅消息返回给ajax结果,我在actionFilter中使用了类似的内容
Response.StatusCode = 200;
//Needed for IIS7.0
Response.TrySkipIisCustomErrors = true;
return new ContentResult {
Content = "ERROR: " + Your_message,
ContentEncoding = System.Text.Encoding.UTF8
};
答案 2 :(得分:0)
我能够使用以下代码在错误响应正文中添加自定义消息:
Response.TrySkipIisCustomErrors = true;
Response.Clear();
Response.Write( $"Custom Error Message." );
return new HttpStatusCodeResult( HttpStatusCode.InternalServerError );