我有一个在IIS(6/7)服务器上运行的经典ASP应用程序。当请求的页面不再可访问时,我想发送Response.Status = "410 Gone"
,但仍会提供某种ErrorDocument
。似乎浏览器一获得410就停止检索。
除了IE之外,所有浏览器都显示相同的“您请求的页面被删除”,所以我猜这是一个服务器设置。在.NET中,似乎有TrySkipIisCustomErrors
,但对于经典ASP,我实际上非常有信心它在IIS管理器的错误页面功能中的任何位置。
即使实际的URI消失了,我还可以告诉我的IIS仍然提供内容吗?
答案 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
那样的东西。