自定义410错误处理程序

时间:2014-06-16 11:21:21

标签: c# iis-7 custom-error-handling http-status-code-410

在共享服务器上的病毒攻击添加了180个链接到客户端网站后,我花了数小时手动删除它们,我想通过包含一个通用的410处理程序来阻止任何类似的未来攻击。我开始修改global.asax.cs以在查询字符串存在时发出410错误,因为此应用程序不使用它们:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        string queryParms = Request.Url.Query;
        if (queryParms.Length > 0)
        {
            Response.StatusCode = 410;
            Response.End();
        }
    }

这在本地测试机器上的IE11和Chrome以及共享服务器上的IE11上工作正常(显示默认错误页面);但Chrome显示空白页。

我的ISP告诉我,自定义错误页面可以解决此问题并提供指向标题为410 a bunch of html pages in IIS的SO帖子的链接。

根据SO post说明,我在根文件夹中创建了一个自定义的410Error.aspx页面并在后面的代码中设置了Response.StatusCode = 410,我修改了web.config作为SO示例,如下所示:

<system.webServer> 
    <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL">
       <remove statusCode="410" subStatusCode="-1" />
       <error statusCode="410" path="/Error410.aspx" responseMode="ExecuteURL" />
    </httpErrors>
</system.webServer>

我还将自定义错误设置为true:

<system.web>
    <customErrors mode="On"  />
    <compilation debug="true" targetFramework="4.0"/>
    ...
</system.web>

不幸的是,Chrome仍在loccal macine和共享服务器上显示空白页面,IE11显示默认的410错误页面。似乎IIS无法找到Error410.aspx,所以我尝试使用几种不同的路径,包括没有运气的绝对路径。我错过了什么?

0 个答案:

没有答案