Мы запустили службу перенаправления ссылок, которая может обрабатывать ссылки в различных форматах. Один из этих форматов заключается в добавлении целевого 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» по-прежнему выдают ошибку в классическом режиме.
Любые мысли или отзывы будут с благодарностью приняты в этот момент.