У меня большая проблема с перезаписью 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) с использованием Classic ASP Pipeline он работает отлично, но когда я переключаю режим конвейера на Integrated, он перестает работать. Нет никаких исключений, ошибок и чего-либо в отладчике / событиях / лог-файлах - только сообщение в браузере о том, что страница не найдена. Самое страшное в том, что имя страницы выглядит как неправильно введенное или объединенное с частями исходной страницы и перезаписью на страницу.
Я развернул свой код на другом компьютере (также Vista-но x64- и IIS 7.0), и он отлично работает в обоих режимах.
Похоже, что есть проблемы с конфигурацией или что?