ASP.NET и проблема перенаправления 404 - PullRequest
1 голос
/ 20 августа 2010

У меня есть страница, которая показывает много входящего трафика. Некоторые из них терпят неудачу, и я хочу перенаправить их на мою главную страницу, чтобы избежать потери потенциальных клиентов. Я пробовал это в моем global.asax

void Application_Error(object sender, EventArgs e)
        {
            // Code that runs when an unhandled error occurs
            Exception ex = Server.GetLastError();

            if (ex is HttpException)
            {

                if (((HttpException)(ex)).GetHttpCode() == 404)

                    Server.Transfer("~/Default.aspx");

            }

            // Code that runs when an unhandled error occurs

            Server.Transfer("~/Default.aspx");

        }

И я пытался использовать пользовательские ошибки, но мое приложение продолжает выдавать мне страницу с ошибкой IIS 7.5 HTTP 404, хотя я должен был сам ее обработать .... Все работает так, как задумано в моей среде разработки, но на моем хосте решение не работает ... какие-либо решения?

Ответы [ 4 ]

2 голосов
/ 20 августа 2010

HTTP 404 не является ошибкой приложения. Это ошибка клиента, которая означает, что запрошенный веб-ресурс не найден / не существует. Он возвращается веб-сервером еще до того, как он достигнет вашего приложения, поэтому ваш код ошибки никогда не будет выполнен.

Изменить: На самом деле я не уверен, что это не изменилось в интегрированном режиме IIS 7.x, но для IIS 6 и IIS 7.x в классическом режиме приведенное выше утверждение верно

2 голосов
/ 20 августа 2010

Попробуйте следующее:

throw new HttpException(404, "Not Found");

Это должно перенаправить пользователя на пользовательскую страницу ошибки, определенную в web.config.

Кроме того, обычно считается плохой практикой перенаправлять пользователя наглавная страница вместо показа специальной страницы "Не найдено".Пользователь должен знать об ошибке.Лучше предложить пользователю несколько полезных ссылок на странице ошибок, а также форму быстрого поиска.

1 голос
/ 20 августа 2010

Я вижу в этом коде потенциальный мертвый цикл на той же странице (default.aspx).

0 голосов
/ 02 сентября 2010

Решено с использованием обработчика http и регистрация его в web.onfig

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...