Global.asax не запускает ASPX-страницы в IIS7 - PullRequest
4 голосов
/ 31 мая 2010

Мы запустили службу перенаправления ссылок, которая может обрабатывать ссылки в различных форматах. Один из этих форматов заключается в добавлении целевого URL в конец ссылки, например

http://url.fwd/abcd/http://www.mydomain.com/page.aspx

Последние два года это работало на Windows Server 2003 / IIS6, но сейчас мы пытаемся перейти к настройке Windows Server 2008 / IIS7, и она больше не работает.

Я читал о проблеме с двоеточиями в URL, но это не влияет на страницы, не заканчивающиеся на «.aspx». Например,

http://url.fwd/abcd/http://www.mydomain.com/page.php

отлично перенаправит.

http://url.fwd/abcd/http//www.mydomain.com/page.aspx

также отлично работает (обратите внимание на отсутствие второго двоеточия). Несмотря на неправильный URL-адрес, он обрабатывается нашей системой пересылки URL-адресов, которая использует пользовательскую страницу 404. В старой системе у нас была похожая проблема, поэтому в Global.asax> Application_Error был написан метод для обработки случая .aspx, и он работал нормально.

На нашем новом сервере ошибка Application_Error никогда не генерируется в Global.asax. Вместо этого я получаю исключение System.NotSupportedException - «Формат данного пути не поддерживается». Это исключение System.NotSupportedException является точным случаем, который мы обрабатываем на странице Global.asax, поэтому он определенно не запускается.

Я изменил ключи реестра, указанные в нескольких сообщениях на форуме, HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET VerificationCompatibility = 1 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ HTTP | Параметры AllowRestrictedChars = 1

Я пытался изменить настройки сопоставления обработчиков для ASPX.

Я пытался настроить пул приложений для использования классического режима вместо интегрированного, но это вызывает совершенно другую ошибку, когда статический контент, такой как изображения и CSS, вообще не отображается. Я проверил, что статический контент включен в функциях Windows, и это так. В классическом режиме запрос «.aspx» выдает две ошибки Bad Request без какой-либо информации. Код страницы с ошибкой, которую я получаю, буквально

Плохой запрос Плохой запрос

ОБНОВЛЕНИЕ: я изменил статическое сопоставление обработчика файлов на форму, найденную на этой странице http://improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6 Однако, как справедливо указывает автор, это взлом, а не правильный способ работы в IIS7. Также исправляет проблему статического файла только в классическом режиме. Страницы «.aspx» по-прежнему выдают ошибку в классическом режиме.

Любые мысли или отзывы будут с благодарностью приняты в этот момент.

Ответы [ 2 ]

7 голосов
/ 17 сентября 2010

Решение IIS 7

Простое решение в IIS 7 - добавить параметр в файл web.config, чтобы IIS обрабатывал все запросы через ваши события Global.asax. Просто добавьте или измените этот раздел в вашем файле web.config, чтобы включить запросы:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
1 голос
/ 23 марта 2017

В моем случае я опубликовал свой сайт в производственном режиме, и я пропустил копирование на сервер App_global.asax.compiled файла. По этой причине не было запущено событий внутри Global.asax.

Надеюсь, что кто-нибудь поможет этим советам, я потерял 8 часов в поисках.

...