我可以返回 HTTP 410 GONE 并仍然提供页面内容吗?

本文关键字:HTTP 返回 GONE 我可以 | 更新日期: 2023-09-27 18:33:10

使用 ASP.NET,我可以将Response.StatusCode设置为(int)HttpStatusCode.Gone并仍然向用户提供页面的其余内容吗?似乎当我将StatusCode设置为410时,页面的内容被删除并替换为通用消息。

我知道 ASP.NET 允许我更改默认错误页面的样式,但我认为在这种情况下这不是我想要的;我不希望此页面的内容成为网站上所有410错误的默认内容。

我可以返回 HTTP 410 GONE 并仍然提供页面内容吗?

我过去通过简单地覆盖页面的 OnInit 方法并强制它返回所需的 HTTP 状态代码来实现这一点。在创建自定义错误页面时,我必须使用此技术,以确保返回正确的 HTTP 状态代码。

using System;
using System.Web.UI;
namespace Website
{
    public partial class _410 : Page
    {
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            Response.Buffer = true;
            Response.StatusCode = 410;
            Response.Status = "410 Gone";
        }
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

您可以设置TrySkipIisCustomErrors以避免这些自定义错误。