返回带有自定义错误消息的 HTTP 结果代码 404

本文关键字:HTTP 结果 代码 消息 自定义 错误 返回 | 更新日期: 2023-09-27 18:35:14

我有这个控制器:

[HttpGet]
public ActionResult AjaxCall(string input)
{
    // ...
    if (!success)
    {
        Response.StatusCode = 404;
        ViewBag.Output = ex.Message;
        return View();
    }
    // ...
}

此控制器处理一些 AJAX 调用。网络浏览器发送呼叫,我通过HTTP错误代码返回结果。我正在使用两个错误代码:200(成功),404(失败)。

这是我的视图的样子:

@{
    Layout = null;
}
@Html.Raw(ViewBag.Output)

"我的视图"只是将错误消息打印到页面上。

一切看起来都很好,直到页面状态代码返回 404 错误代码。然后,代码忽略我的"ViewBag.Output"消息。我总是收到以下消息,而不是我的自定义消息:

您要查找的资源已被删除,具有其名称 已更改或暂时不可用。

无论发生哪个错误。如您所猜测的,这是系统默认的404错误代码消息。

如何在自定义消息中返回 404 错误代码?

返回带有自定义错误消息的 HTTP 结果代码 404

如果你使用AJAX,我想你发送一些JSON/XML字符串或返回404。如果是这样,请使用字符串而不是操作结果作为操作的返回类型。此外,您可能会发现这个问题很有帮助:返回 404 错误 ASP.NET MVC 3