Как стать автором
Обновить

Комментарии 15

Полезная статья. Хочу добавить, что такая возможность есть в asp.net MVC framework.
Презентация этого дела тут =>
https://msdb.ru/Downloads/msdn/webcasts/1032372636/MVCFrameworkWebCast.pptx

обзорная статья тут =>
http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx
Спасибо, посмотрю.
Я все никак VS 2008 не поставлю..
Если не ошибаюсь то UrlRewritingNet не позволяет делать rewrite на директории, а только на файлы.

Для коллекции ещё один модуль:
http://www.codeproject.com/KB/aspnet/nUrlRewriter1.aspx

В MVC это всё конечно-же проще.
Честно говоря не знаю, с директориями не работал..
Надо будет посмотреть на этот MVC как-нибудь.
Пока MS ASP.NET MVC Framework не релиз, они постоянно в нем что-то меняют, но то, что на данный момент представляет собой механизм Routing'а - это что-то с чем-то! Действительно мощная штучка.
Ну, это я к тому, что стоит ознакомиться :)
А как же метод "ручками" через HttpModule или 404-страницу? :)
Это как?
Ближе на второй вариант похоже, но собственная реализация. Можно с конфигурацией через web.config, а можно и поместу прописать пару регулярных выражений, если страниц на сервере не так уж много.
Если через HttpModule, то в HttpApplication.BeginRequest проверяем запрашиваемый урл и при необходимости делаем Server.Transfer на нужную страницу.
Если делать через 404, то все запросы к файлам которых нет физически на сервере направляются на него. Там разбираем опять же запрашиваемый урл и трансферим куда нужно.

Параметры при этом передаются либо через HtppContext.Items, либо через Server.Transfer с собственной строкой QueryString, но тогда проблему с постбеком приходится решать через написание собственной Form.

Как-то страшно выглядит, то что написал. На самом деле не так уж все сложно :)
Да не, написал все нормально, смысл понятен. :)
Но, эти решения (2 и 3) все-таки для большого количеств страниц подходят больше.
Да и готовые уже решения, самому ничего не надо писать. Правда ты конечно зажат в рамках модуля.
Кстати у нас именно так сейчас и сделано на проектах - второй вариант. Но там оч много проблем с постбэком, и другим. Потихоньку дописываем rewriting первого варианта. Как будет готов, может напишу об этом.
Варианты рассматриваемые мною или автором статьи?
Если мною, то они в общем-то практически аналогичны по логике выполнения, только место где они выполняются - разные.
В одном из проектов я перешел на Rewriting с помощью 404 для того, чтобы появилась возможность обрабатывать обращения к каталогам, например, /blog/net/
При этом в самом IIS нужно настроить свою aspx-страницу для 404, где мы и обработаем этот запрос. С постбеком, насколько я занаю, проблемы будут в обеих случаях, поэтому приходится писать свой контрол Form и там подменять аттрибут Action на тот, что указан в URL, а не исполняемой страницы.
ISAPI Rewrite очень удобный, но установят его не на всякий хостинг.
Ещё можно упомянуть про возможности IIS7 - тут даже необходимости в ISAPI Rewritе нет (про этот способ есть у Scott Guthrie).
Это точно.
Мы его используем на выделенном хостинге.
Столкнулся с проблемой. UrlRewritingNet не позволяет делать реврайт на директории. Работает только в том случае, если расширение ".aspx". Чтобы работало, надо прописать в настройках IIS, (Home Directory->Configurations->Mappings) Wildcard application maps, вот такой путь «c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll».
После такого «лечения», все заработало
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории