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

时间:2013-09-29 16:46:12

标签: c# asp.net

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

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

2 个答案:

答案 0 :(得分:2)

我过去通过简单地覆盖页面的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)
        {
        }
    }
}

答案 1 :(得分:1)

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