Rewritepath и IIS интегрированный режим - PullRequest
1 голос
/ 21 ноября 2008

У меня большая проблема с перезаписью 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), и он отлично работает в обоих режимах. Похоже, что есть проблемы с конфигурацией или что?

Ответы [ 3 ]

0 голосов
/ 23 ноября 2008

Хорошо, рекомендуем использовать модуль перезаписи URL, выпущенный Microsoft, который был протестирован.

http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

Желаю вам понравится.

0 голосов
/ 08 января 2009

Наконец-то я нашел рабочее решение.

.NET 3.5 TransferRequest

0 голосов
/ 22 ноября 2008

Просто предположение: укажите свой тип с именем сборки (type = "MyModule, MyAssembly")

...