4

我试着用这个:

return Request.CreateResponse(HttpStatusCode.InternalServerError, "My message");

我也试过这个:

return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "My message");

但是我在浏览器上看到了 500 错误,尽管显示了“我的消息”之类的任何消息。

4

3 回答 3

9

要从 ASP.NET MVC 控制器返回带有消息的特定响应代码,请使用:

return new HttpStatusCodeResult(errorCode, "Message");

确保控制器中的方法是 ActionResult 类型,而不是 ViewResult。

于 2013-03-08T18:58:43.010 回答
1

我能够使用以下代码在错误响应正文中添加自定义消息:

Response.TrySkipIisCustomErrors = true;
Response.Clear();
Response.Write( $"Custom Error Message." );
return new HttpStatusCodeResult( HttpStatusCode.InternalServerError );
于 2020-05-25T11:43:49.693 回答
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
        };
于 2013-03-08T19:08:44.530 回答