Персонализированное перенаправление 404 для сайта с перезаписью URL - PullRequest
0 голосов
/ 01 сентября 2010

На моем сайте я использовал модуль перезаписи URL IIS7 для перенаправления URL-адресов, таких как http://mysite.com/File.aspx?Name=SomeName в http://mysite.com/SomeName.

. Похоже, что IIS7 создал соответствующую проверку правил, поэтому любой URLсортировка http://mysite.com/SomeURL перенаправляется в File.aspx.Это нормально в большинстве случаев, когда URL корректно переписан.

Проблема в том, что в некоторых случаях файл больше не существует - http://mysite.com/SomeName2 все равно будет перенаправлен на http://mysite.com/File.aspx?Name=SomeName2.

Я хочу показать пользовательскую страницу ошибки 404 для этого URL - как я могу вызвать ошибку 404 в global.asax (я установил регистрацию и обработку ошибок приложения в global.asax)?Код ниже не работает.

Response.Status = "404 Not Found"
Response.AddHeader("Location", "http://mysite.com/Invalid-File.aspx?" & Request.QueryString.ToString)

Это просто показывает некрасивую страницу ошибки IIS 404 по умолчанию.Добавление customerror в web.config не помогает.

Спасибо за вашу помощь!

Ответы [ 3 ]

1 голос
/ 01 сентября 2010

При установке кода состояния необходимо предотвратить переход IIS на основе вашего нового кода ошибки, убедитесь, что установлено Response.TrySkipIisCustomErrors, например:

Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.NotFound;
Response.AddHeader("Location", "http://mysite.com/Invalid-File.aspx?" & Request.QueryString.ToString)
1 голос
/ 01 сентября 2010

Вы пытались установить страницу с ошибкой 404 в IIS admin равной той, которую вы указали в web.config? Интересно, не запускается ли .net в нужное время?

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

вы могли бы потенциально использовать метод Application_Error, а затем сделать response.redirect на нужную страницу с правильным кодом состояния

...