Я посмотрел на несколько переписывателей URL для ASP.Net и IIS, и мне было интересно, что все остальные используют и почему.
Вот те, которые я использовал или смотрел на:
- ThunderMain URLRewriter : использовался в предыдущем проекте, не имел той гибкости / производительности, которую мы искали
- Ewal UrlMapper : используется в текущем проекте, но источник кажется заброшенным
- UrlRewritingNet.UrlRewrite : похоже на приличную библиотеку, но из-за плохой грамматики документации я чувствую себя неловко
- UrlRewriter.NET : это мой текущий фаворит, обладает большой гибкостью, хотя дополнительные функции, добавленные в регулярные выражения замены, немного изменяют стандартный синтаксис регулярных выражений .Net
- Managed Fusion URL Rewriter : этот вопрос я обнаружил в предыдущем вопросе о переполнении стека, но пока не пробовал его, из примера синтаксиса он не представляется редактируемым через web.config
+1 UrlRewritingNET.URLRewrite - используется в нескольких сотнях сервисов / порталов / сайтов на одной коробке без проблем в течение многих лет! (@ Джейсон - это тот, о ком ты говоришь, верно?)
и я также использовал URLRewriter.NET на личном сайте и нашел его, ах, интересным. @travis, вы правы насчет измененного синтаксиса, но как только вы привыкнете к нему, это хорошо.
Если бы я начинал новый веб-проект сейчас, я бы смотрел на использование MVC с нуля. Это использует переписанные URL-адреса в качестве стандарта.
Есть System.Web.Routing, который был только что выпущен с .NET 3.5.
Вы можете просто использовать Request.RewritePath () в пользовательском HttpModule
Я предпочитаю использовать реализацию IHttpHandlerFactory и иметь полный контроль над всеми входящими URL-адресами и тем, где они отображаются.
Я использовал UrlRewriting.NET раньше на сайте с очень большим трафиком - он отлично работал для нас. Я считаю, что разработчики немецкие, поэтому английская документация, вероятно, не так хороша, как могла бы быть. Я очень рекомендую это.
У меня был хороший опыт работы с Ionic ISAPI Rewrite Filter, который очень похож на ISAPI_Rewrite, за исключением бесплатного. Обе моделируются после mod_rewrite и являются фильтрами ISAPI, поэтому вы не можете управлять ими в коде, так как вы должны настроить их в IIS.
Я только что установил ISAPI Rewrite 3 от Helicon . Работает точно так же, как htaccess. Я до сих пор это понимаю.
Я с большим успехом использовал .NET URL Rewriter и Reverse Proxy . Он почти на одном уровне с mod_rewrite и использует практически все тот же синтаксис. Владелец проекта очень услужливый и дружелюбный, а продукт отлично работает. Этот драгоценный камень предоставляет функции перезаписи и прокси, которые не предлагают многие решения. ИМО, стоит посмотреть.
IIS 7 имеет модуль перезаписи URL, который достаточно эффективен и хорошо интегрируется с IIS.
Я не рекомендовал бы UrlRewritingNet, если вы находитесь в среде IIS7 Windows 2008.
Причина: UrlRewritingNet требует, чтобы у вас режим пула приложений = Классический и НЕ был интегрирован. Это не оптимально. Кроме того, их проект кажется очень мертвым за последние 2 года.
+1 для UrlRewritingNet.UrlRewrite, но почему мне всегда нужно заканчивать свой URL-адрес .aspx? Я думаю, что это должно быть улучшено лучше регулярного выражения partern.
Почему я всегда должен заканчиваться aspx в virtualURL localhost / Products / Beverages.aspx "," localhost / Products / Condiments.aspx ". Я просто хочу ввести localhost / Products / Beverages", "localhost / Products / Condiments", который выглядеть как маршрут MVC.
Это выглядит хорошо, но он не работает для моего сайта. Я до сих пор не могу понять это.
.aspx
использованием должно быть связано с ограничением IIS. В противном случае вам придется сопоставить .*
использовать aspnet_isapi.dll. Многие хостинг-провайдеры не допускают этого, и это может привести к снижению производительности и некоторым другим странным особенностям, таким как PNG, обслуживаемые с неправильным типом пантомимы. Маршрутизация 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"));
}