У меня большая проблема с переписыванием URL-адресов для IIS 7.0.
Я написал простой модуль для перезаписи своего веб-приложения NET3.5 / IIS7. Вот часть кода.
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
if (app.Request.Path.Contains("pagetorewrite.aspx"))
HttpContext.Current.RewritePath("~/otherpage.aspx");
}
И я регистрирую свой модуль в web.config:
<system.webServer>
<validation validateIntegratedModeConfiguration = "false"/>
<modules>
<add name = "MyModule" type = "MyModule" preCondition = "" />
В IIS 7.0 (Vista) с использованием классического конвейера ASP он работает отлично, но когда я меняю режим конвейера на «Интегрированный», он перестает работать. В отладчике / событиях / файлах журнала нет исключений, ошибок и чего-либо еще - только сообщение в браузере о том, что страница не найдена. Самым странным является то, что имя страницы выглядит неправильно или слито из частей исходной страницы и переписано на страницу.
Я развернул свой код на другом компьютере (тоже vista, но x64- и iis 7.0), и он отлично работает в обоих режимах. Похоже, проблема в конфигурации что ли?





Просто предположение: укажите свой тип с помощью имени сборки (type = "MyModule, MyAssembly")
Что ж, рекомендую вам использовать модуль перезаписи URL, выпущенный Microsoft, который был протестирован.
http://learn.iis.net/page.aspx/460/using-url-rewrite-module/
Желаю вам насладиться этим.
Наконец я нашел рабочее решение.
.NET 3.5 Запрос на передачу