Какой переписчик URL-адресов вы используете для ASP.Net?

Я просмотрел несколько программ перезаписи URL-адресов для ASP.Net и IIS, и мне было интересно, что используют все остальные и почему.

Вот те, которые я использовал или смотрел:

  • ThunderMain URLRewriter: использовался в предыдущем проекте, не обладал достаточной гибкостью / производительность, которую мы искали
  • Ewal UrlMapper: используется в текущем проекте, но исходный код, похоже, заброшен
  • UrlRewritingNet.UrlRewrite: кажется неплохой библиотекой, но плохая грамматика документации оставляет мне чувство беспокойный
  • UrlRewriter.NET: это мой текущий фаворит, имеет большую гибкость, хотя дополнительные функции, добавленные в заменяющие регулярные выражения, изменяют стандартный синтаксис регулярных выражений .Net немного
  • Managed Fusion URL Rewriter: я нашел его в предыдущий вопрос о переполнении стека, но еще не пробовал его, судя по синтаксису примера, это не похоже можно редактировать через web.config

person travis    schedule 18.08.2008    source источник


Ответы (11)


+1 UrlRewritingNET.URLRewrite - используется в нескольких сотнях сервисов / порталов / сайтов на одном компьютере без проблем в течение многих лет! (@ Джейсон - это тот, о котором ты говоришь, верно?)

и я также использовал URLRewriter.NET на личном сайте, и нашел его, ах, интересным. @travis, вы правы насчет измененного синтаксиса, но как только вы к нему привыкнете, это хорошо.

person Pat Hermens    schedule 20.08.2008
comment
У меня с этим проблема. мне нужно было перенаправить на другой сайт. Например: example.com/some3rdparty на somesite.com/with?alot&of¶meters Только для крошечного URL. Это невозможно сделать из коробки, нужны изменения в источниках. Итак, я использовал ManagedFusion - person AlfeG; 13.06.2009
comment
Также жестко закодированное название раздела urlrewritingnet стало большим сюрпризом T_T - person AlfeG; 13.06.2009
comment
Это не невозможно. Это просто требует целеустремленности и решимости. Я представляю, вы говорите о чем-то вроде следующего? ‹Добавить virtualUrl = ^ ~ / some3rdparty rewriteUrlParameter = ExcludeFromClientQueryString destinationUrl = somesite.com / с? Alot = $ 2of = $ 3parameters = $ 4. $ 5 ignoreCase = true /› или просто destinationUrl = somesite.com / с? Alotofparameters? Конечно, есть кривая обучения, но эй, это одна из наиболее всеобъемлющих, которые я использовал. Маршрутизация и MVC созданы для совместного использования, и они определенно не помогут вам в таких ситуациях. - person Pat Hermens; 02.07.2009

Есть System.Web.Routing, который только что был выпущен вместе с .NET 3.5.

Вы можете просто использовать Request.RewritePath () в настраиваемом HttpModule

Я предпочитаю использовать реализацию IHttpHandlerFactory и иметь полный контроль над всеми входящими URL-адресами и их отображением.

person Mark Cidade    schedule 18.08.2008

Если бы я начинал новый веб-проект сейчас, я бы посмотрел на использование MVC с нуля. Стандартно использует переписанные URL-адреса.

person Keith    schedule 18.08.2008

В IIS 7 есть модуль перезаписи URL, который достаточно эффективен и хорошо интегрируется с IIS.

person notandy    schedule 27.02.2009
comment
+1 за то, что ты новенькая! Это то, что я использую. Однако будьте осторожны, если вы привыкли к UrlRewritingNet.Rewrite, поскольку Request.Url теперь является фактической страницей, а не запрошенной. Теперь вам нужен Request.RawUrl, чтобы получить запрашиваемый URL. - person BritishDeveloper; 14.04.2010

Раньше я использовал UrlRewriting.NET на сайте с очень высокой посещаемостью - у нас это отлично сработало. Я считаю, что разработчики - немцы, поэтому английская документация, вероятно, не так хороша, как могла бы быть. Я очень рекомендую это.

person Jason    schedule 18.08.2008

У меня был хороший опыт работы с Ionic ISAPI Rewrite Filter, который очень похож на ISAPI_Rewrite , кроме бесплатного. Оба созданы на основе mod_rewrite и являются фильтрами ISAPI, поэтому вы не можете управлять ими в коде, поскольку вам нужно настроить их в IIS.

person John Sheehan    schedule 18.08.2008

Я бы не рекомендовал UrlRewritingNet, если вы работаете в среде IIS7 Windows 2008.

Причина: UrlRewritingNet требует, чтобы у вас был режим пула приложений = классический, а НЕ интегрированный. Это не оптимально. Кроме того, их проект кажется очень мертвым за последние 2 года.

person aron    schedule 14.10.2009
comment
это не проблема в Windows 2008 R2, все сайты (50+) работают в интегрированных пулах с UrlRewritingNet.UrlRewrite - person balint; 26.11.2013

Я только что установил Helicon ISAPI Rewrite 3. Работает точно так же, как htaccess. Я пока копаю.

person chrisofspades    schedule 23.08.2008

Я с большим успехом использовал .NET URL Rewriter и обратный прокси. Он почти на одном уровне с mod_rewrite и использует почти тот же синтаксис. Владелец проекта очень услужливый и дружелюбный, а продукт отлично работает. Этот драгоценный камень предоставляет функции перезаписи и прокси, которых не предлагают многие решения. ИМО, стоит посмотреть.

person Dscoduc    schedule 07.01.2009

+1 для UrlRewritingNet.UrlRewrite тоже, но почему мне всегда нужно заканчивать свой URL на .aspx? Я думаю, что надо улучшить регулярное выражение partern.

Почему мне всегда нужно заканчивать aspx в virtualURL localhost / Products / Beverages.aspx "," localhost / Products / Condiments.aspx ". Я просто хочу ввести localhost / Products / Beverages", "localhost / Products / Condiments", похож на маршрут MVC.

Этот выглядит неплохо, но для моего сайта он не работает. Я до сих пор не могу понять.

person Jonas T    schedule 26.05.2011
comment
Окончание использования .aspx должно быть связано с ограничением в IIS. В противном случае вам придется сопоставить .*, чтобы использовать aspnet_isapi.dll. Многие хостинг-провайдеры не допускают этого, и это может привести к снижению производительности и некоторым другим странным особенностям, таким как PNG, обслуживаемые с неправильным типом mime. - person travis; 26.05.2011

Маршрутизация asp.net также обслуживает требование переписывания URL-адресов и даже больше, чем. С маршрутизацией asp.net вы можете не просто «переписать URL», но и создавать собственные обработчики для различных запросов. Однако для маршрутизации asp.net требуется как минимум asp.net sp1.

Основное, что вы делаете для простой маршрутизации, - это добавляете несколько обработчиков маршрутов в Application_Start даже внутри файла Global.asax.cs.

 protected void Application_Start(object sender, EventArgs e)
        {

                        RegisterRoutes(RouteTable.Routes);


        }
        private static void RegisterRoutes(RouteCollection routes)
        {          

            routes.Add("Routing1", new Route("/Blog/id/2","/Blog.aspx"));

        }
person Paras    schedule 25.08.2012