IIS上的经典ASP提供错误文档而不是HTTP 410 Gone上的内容

时间:2014-02-11 12:32:31

标签: iis asp-classic http-status-codes

我有一个在IIS(6/7)服务器上运行的经典ASP应用程序。当请求的页面不再可访问时,我想发送Response.Status = "410 Gone",但仍会提供某种ErrorDocument。似乎浏览器一获得410就停止检索。

除了IE之外,所有浏览器都显示相同的“您请求的页面被删除”,所以我猜这是一个服务器设置。在.NET中,似乎有TrySkipIisCustomErrors,但对于经典ASP,我实际上非常有信心它在IIS管理器的错误页面功能中的任何位置。

即使实际的URI消失了,我还可以告诉我的IIS仍然提供内容吗?

2 个答案:

答案 0 :(得分:3)

在您的Web应用程序的根目录中,您必须在web.config文件中添加一个属性:

<system.webServer>
    <httpErrors existingResponse="PassThrough">
        …
    </httpErrors>
<system.webServer>

existingResponse设置为PassThrough,如果存在现有响应,则会传递响应。有一个很好的article on HTTP Errors at www.iis.net

不需要<error>元素,特别是状态代码410上没有元素(当然你可以添加一个元素)。

答案 1 :(得分:1)

您可以在那里放置一个经典的ASP页面,以提供您想要的内容和HTTP状态代码。

我在IIS 7.5上使用以下代码对其进行了测试:

    <% Response.Status = "410 Gone" %>
    <html>
    <body>
    <h1>this is my content</h1>
    </body>
    </html>

Firefox按原样显示内容,而非一般错误页面。

<强>更新

您必须禁用自定义错误才能生效。您可以通过在web.config中添加以下行来实现此目的(进入section configuration / system.web):

<customErrors mode="Off" />

否则,默认错误页面会否决您的输出。经典ASP似乎没有像TrySkipIisCustomErrors那样的东西。