Классический ASP на IIS доставляет документ об ошибке вместо содержимого по HTTP 410 Gone
У меня есть приложение Classic ASP, работающее на серверах IIS (6/7). Когда запрашивается страница, которая больше не будет доступна, я хочу отправить Response.Status = "410 Gone"
но все же доставить какой-то ErrorDocument
, Похоже, что браузеры прекращают поиск, как только они получают 410.
За исключением IE, все браузеры отображают одну и ту же "страницу, которую вы запросили, была удалена", так что, я думаю, это настройка сервера. В.NET, похоже, есть TrySkipIisCustomErrors
, но для Classic ASP, я на самом деле вполне уверен, что это где-нибудь в функции страниц ошибок в IIS Manager.
Могу ли я сказать, чтобы мой IIS все еще доставлял контент, даже если фактический URI отсутствует?
2 ответа
В корневом каталоге вашего веб-приложения вы должны добавить атрибут в поле web.config
файл:
<system.webServer>
<httpErrors existingResponse="PassThrough">
…
</httpErrors>
<system.webServer>
С existingResponse
установлен в PassThrough
, ответ будет доставлен, если существует существующий ответ. На сайте www.iis.net есть хорошая статья об ошибках HTTP.
Там не должно быть <error>
элемент, особенно нет в коде состояния 410 (но, конечно, вы можете добавить один).
Вы можете разместить классическую страницу ASP, которая доставляет контент и код состояния HTTP, который вы хотите.
Я проверил это на IIS 7.5 с помощью следующего кода:
<% Response.Status = "410 Gone" %>
<html>
<body>
<h1>this is my content</h1>
</body>
</html>
Firefox показывает содержимое как есть, а не общую страницу с ошибкой.
Обновить:
Вам нужно будет отключить пользовательские ошибки, чтобы это работало. Вы можете сделать это, добавив следующую строку в ваш web.config (в раздел configuration/system.web):
<customErrors mode="Off" />
В противном случае страница ошибки по умолчанию отменяет ваш вывод. Классический ASP действительно не похож на TrySkipIisCustomErrors
,