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