Сопоставление подстановочных знаков IIS6 устраняет пользовательские ошибки .net - PullRequest
1 голос
/ 02 марта 2010

Мы используем пользовательский urlrewiter на наших сайтах .net и устанавливаем сопоставление с подстановочными знаками для перенаправления любого запроса в фильтр .net isapi для обработки.

Это работает нормально, но мы заметили проблему с нашими пользовательскими страницами 404, которые не работают, и вместо этого я обрабатываю 404. Мы настраиваем пользовательские ошибки в файле web.config следующим образом

<customErrors mode="On">
  <error statusCode="404" redirect="/404.aspx"/>
  <error statusCode="500" redirect="/500.htm"/>
</customErrors>

Я заметил, что настраиваемая страница ошибок отображается, если я запрашиваю страницу с расширением aspx (www.mysite.com/madeuppage.aspx), но не с недопустимым каталогом (www.mysite.com/madeupdirectory/). Я предполагаю, что это потому, что IIS передает aspx-страницы в .NET enginbe для обработки, но я думал, что сопоставление с подстановочными знаками также передаст каталоги?

Это можно исправить, настраивая пользовательскую страницу ошибок в IIS, но я бы предпочел, чтобы это было настроено в web.cofig, если это возможно? Есть идеи?

Ответы [ 2 ]

1 голос
/ 05 марта 2010

IIS передает 404 запроса модулям, но выполняет только несколько событий:

IIS_BeginRequest /qwe
IIS_AuthenticateRequest
IIS_AuthorizeRequest
IIS_ResolveRequestCache
IIS_PostResolveRequestCache
IIS_EndRequest/qwe

Я один из разработчиков Helicon Ape (http://www.helicontech.com/ape).). Фактически, вышеописанные события были выполнены в Ape, когда я запросил несуществующую страницу. Вы можете попробовать Ape, потому что у него есть как перезапись URL, так и нестандартные решения ошибок. Пример:

ErrorDocument 500 http://www.domain.com/cgi-bin/tester
ErrorDocument 404 /custom_error_page.htm
ErrorDocument 403 "Sorry, the access is forbidden"

Если это уместно, синтаксис текстовый и совместимый с Apache.

0 голосов
/ 02 марта 2010

Ваш пользовательский URL Rewriter является реализацией HttpModule? Я предполагаю, что ваше решение есть, но это зависит от самой реализации. Если вы ОБРАЩАЕТЕ какой-либо запрос, не имеет значения, является ли .aspx или .xxx или каталогом.

Например: в одном из наших продуктов мы заблокировали HttpModule Url Rerwriter, используя RegularExpressions для захвата путей или расширений или чего-либо еще в URI для обработки этого запроса в зависимости от некоторой бизнес-логики.

Может быть, вы хотите что-то промежуточное. Я не понимаю вашу проблему в глобальном масштабе

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