Я использую Context.RewritePath() в приложении ASP.NET 3.5, запущенном на IIS7.Файлы журнала IIS7, RewritePath и IIS
Я делаю это в приложении BeginRequest событие и все работает файл.
Запросы/спорт правильно переписаны по умолчанию .aspx? Id = 1 и т. Д.
Проблема в том, что в моем журнале IIS я вижу запросы GET для /Default.aspx?id=1, а не для/sports.
Этот вид кода отлично работал под IIS6.
Использование Microsoft Rewrite не является вариантом из-за некоторой бизнес-логики, которая должна быть реализована.
Спасибо.
EDIT:
Кажется, мой обработчик слишком рано в трубопроводе, но если перенести логику позднего события, чем вся переписана вещь не работает (это слишком поздно, StaticFileHandler поднимает мой запрос).
Я googled и googled, спросил вокруг, не могу поверить, что никто не имеет этой проблемы?
EDIT:
Yikes! Вот что я нашел на форуме IIS:
«Это связано с тем, что в интегрированном режиме IIS и asp.net совместно используют общий конвейер, а RewritePath теперь рассматривается IIS, а в IIS6 его даже не видел IIS - вы можете обойти это, используя классический режим, который будет вести себя как IIS6 ».
Окончательное обновление: Пожалуйста, взгляните на my answer below. Я обновил его результатами после более чем года в производственной среде.
Muerte, правильный способ сделать это - ответить на ваш собственный вопрос. Вы заявили, что этот вопрос может быть правильным, поставив IIS 7 в классический режим, который будет работать так же, как IIS 6. До тех пор, пока вы понимаете, что вы не выиграете от повышения безопасности или производительности в новом IIS 7, сделав это, это кажется разумным ответом. – Spence 2009-02-17 12:47:29
Я понимаю, что я могу ответить на свой вопрос, но я не считаю это ответом вообще, и я все еще преследую квест. :) Я кое-что пробовал, и я обязательно добавлю свой результат либо в качестве ответа, либо в качестве окончательного редактирования моего вопроса. – muerte 2009-02-17 15:50:19
Я бы (и имел) просто посмотрю на сборку System.Web.Routing через Reflector. Чтобы узнать, где его подключить. IIRC, вам нужно сделать это в PostMapRequestHandler и PostAcquireRequestState. – leppie 2009-02-12 11:50:32