Мы запускаем службу перенаправления ссылок, которая может обрабатывать ссылки в различных форматах. Один из этих форматов - добавить целевой 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' выдает две ошибки неверного запроса без абсолютно никакой информации. Код страницы с ошибкой, которую я получаю, буквально
Плохой запрос ‹html› ‹body› Плохой запрос ‹/body› ‹/html›
ОБНОВЛЕНИЕ: я изменил отображение обработчика статических файлов на форму, представленную на этой странице http://improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6 Однако, как Автор правильно отмечает, что это взлом, а не правильный способ делать что-то в IIS7. Он также устраняет проблему статического файла только в классическом режиме. Страницы '.aspx' по-прежнему выдают ошибку в классическом режиме.
Мы будем очень благодарны за любые мысли или предложения на этом этапе.