Пара способов:
В вашем файле web.config в режиме customErrors установите redirectMode
на ResponseRewrite
- это удалит перенаправление 302 с сервера на страницу ошибок - это также имеет счастливое совпадение, которое использует легко увидеть исходную запрашиваемую страницу и повторить попытку, нажав F5, если это может решить проблему.
Если вы подключаетесь к событию ApplicationError, убедитесь, что вместо перенаправления на страницы ошибок вы используете Server.Transfer
.
У меня есть следующее в одном из моих web.configs:
<customErrors mode="On"
defaultRedirect="ErrorHandler.aspx"
redirectMode="ResponseRewrite">
Затем на своей странице ErrorHandler я проверяю последнюю ошибку с сервера и настраиваю:
var serverError = Server.GetLastError();
var error = serverError as HttpException;
int errorCode;
string errorMessage;
if (null != error)
{
errorCode = error.GetHttpCode();
errorMessage = error.GetHtmlErrorMessage();
}
else
{
errorCode = 404;
errorMessage = "Page not found";
}
Response.StatusCode = errorCode;
Response.StatusDescription = errorMessage;
Очевидно, что вы, возможно, захотите выполнить дополнительную обработку - например, прежде чем я сделаю все это, я сравниваю исходный запрос с моей базой данных Redirects для проверки перемещенных URL-адресов содержимого / тщеславия и возвращаюсь к этому, только если не смог найти подходящий редирект.