2008-08-18 16 views
14

Tôi đã xem xét một số URL rewriters cho ASP.Net và IIS và đã tự hỏi những gì mọi người khác sử dụng, và tại sao.Bạn đang sử dụng trình ghi đè url nào cho ASP.Net?

Dưới đây là những người mà tôi đã sử dụng hoặc nhìn:

  • ThunderMain URLRewriter: được sử dụng trong một dự án trước đó, đã không hoàn toàn có thể linh động/thực hiện chúng tôi đang tìm kiếm
  • Ewal UrlMapper: được sử dụng trong một dự án hiện tại, nhưng nguồn dường như bị bỏ rơi
  • UrlRewritingNet.UrlRewrite: có vẻ như một thư viện phong nha nhưng tài liệu về ngữ pháp nghèo lá tôi cảm thấy không thoải mái
  • UrlRewriter.NET: đây là fav hiện tại của tôi, có tính linh hoạt cao, mặc dù các chức năng bổ sung được bơm vào các regex thay thế thay đổi cú pháp chuẩn .Net regex một chút
  • Managed Fusion URL Rewriter: Tôi đã tìm thấy điều này trong một ngăn xếp ngăn xếp, nhưng chưa thử, từ ví dụ cú pháp, dường như không thể chỉnh sửa được thông qua web.config

Trả lời

3

+1 UrlRewritingNET.URLRewrite - được sử dụng trong hàng trăm dịch vụ/cổng/trang web trên một hộp duy nhất không có vấn đề trong nhiều năm! (@ Jason - đó là người bạn đang nói về, phải không?)

và tôi cũng đã sử dụng URLRewriter.NET trên một trang web cá nhân và thấy nó, ah, thú vị. @travis, bạn nói đúng về cú pháp đã thay đổi, nhưng một khi bạn quen với nó, nó rất tốt.

+0

Tôi gặp sự cố với nó. những gì tôi cần là chuyển hướng đến trang web khác. Ví dụ: http://example.com/some3rdparty đến http://somesite.com/with?alot&of¶meters Chỉ với URL nhỏ Không thể thực hiện từ hộp, cần phải có thay đổi về nguồn. Vì vậy, tôi đã sử dụng ManagedFusion – AlfeG

+0

Ngoài ra phần cứng được mã hóa tên "urlrewritingnet" là một bất ngờ lớn T_T – AlfeG

+0

Nó không phải là không thể. Nó chỉ mất sự cống hiến và định nghĩa. Tôi sẽ tưởng tượng bạn đang nói về một cái gì đó như sau? hoặc chỉ destinationUrl = "somesite.com/with?alot & trong số & thông số"? Chắc chắn, có một đường cong học tập, nhưng hey, nó là một trong những cái toàn diện hơn mà tôi đã sử dụng. Định tuyến và MVC được sinh ra để được sử dụng cùng nhau, và chúng chắc chắn sẽ không giúp bạn tốt hơn trong tình huống này. –

4

Nếu tôi bắt đầu một dự án web mới ngay bây giờ, tôi sẽ xem xét việc sử dụng MVC từ đầu. Điều đó sử dụng URL được viết lại làm chuẩn.

7

Có System.Web.Routing vừa được phát hành với .NET 3.5.

Bạn chỉ có thể sử dụng Request.RewritePath() trong một tùy chỉnh HttpModule

Tôi thích sử dụng một thực hiện IHttpHandlerFactory và có toàn quyền kiểm soát tất cả các URL đến và nơi họ đang ánh xạ tới.

2

Tôi đã sử dụng UrlRewriting.NET trước trên một trang web có lưu lượng truy cập rất cao - nó hoạt động tốt cho chúng tôi. Tôi tin rằng các nhà phát triển là người Đức, vì vậy các tài liệu tiếng Anh có lẽ không tốt như nó có thể được. Tôi rất muốn giới thiệu nó.

2

Tôi đã có trải nghiệm tốt với Ionic's ISAPI Rewrite Filter rất giống với ISAPI_Rewrite, ngoại trừ miễn phí. Cả hai đều được mô hình hóa sau mod_rewrite và là các bộ lọc ISAPI, vì vậy bạn không thể quản lý chúng trong mã khi bạn phải thiết lập chúng trong IIS.

1

Tôi đã sử dụng .NET URL Rewriter and Reverse Proxy với thành công lớn. Nó gần như ngang bằng với mod_rewrite và sử dụng hầu như tất cả các cú pháp tương tự. Chủ sở hữu của dự án là cực kỳ hữu ích và thân thiện và sản phẩm hoạt động tuyệt vời. Đá quý này cung cấp cả chức năng Viết lại và Proxy, mà nhiều giải pháp không cung cấp. IMO, đáng xem.

3

IIS 7 có URL Rewrite Module có khả năng tương đối tốt và tích hợp tốt với IIS.

+0

+1 dành cho skool mới! Đây là những gì tôi sử dụng. Hãy cẩn thận mặc dù nếu bạn đang sử dụng để UrlRewritingNet.Rewrite, kể từ Request.Url bây giờ là trang thực tế chứ không phải là một yêu cầu. Bây giờ bạn cần Request.RawUrl để nhận được url thực sự được yêu cầu – BritishDeveloper

2

Tôi không khuyến nghị UrlRewritingNet nếu bạn đang ở trong môi trường IIS7 Windows 2008.

Lý do: UrlRewritingNet yêu cầu bạn ứng dụng chế độ nhóm = Cổ điển và KHÔNG được tích hợp. Đây không phải là tối ưu Ngoài ra, dự án của họ có vẻ rất đã chết trong 2 năm qua.

+0

nó không phải là vấn đề trên Windows 2008 R2, tất cả các trang (50+) chạy trong các bể tích hợp với UrlRewritingNet.UrlRewrite – balint

0

+1 cho UrlRewritingNet.UrlGửi lại quá nhưng tại sao tôi luôn cần phải kết thúc URL của mình bằng .aspx? Tôi nghĩ rằng nó cần được cải thiện tốt hơn biểu hiện thường xuyên partern.

Tại sao tôi luôn phải kết thúc bằng aspx trong virtualURL localhost/Products/Beverages.aspx "," localhost/Products/Condiments.aspx ". Tôi chỉ muốn nhập localhost/Products/Beverages", "localhost/Products/Condiments "trông giống như lộ trình MVC.

This một giao diện đẹp nhưng không hoạt động đối với trang web của tôi. Tôi vẫn không thể hiểu được.

+0

Kết thúc bằng '.aspx' đến một giới hạn với IIS. Nếu không, bạn phải lập bản đồ '. *' Để sử dụng aspnet_isapi.dll. Nhiều nhà cung cấp dịch vụ lưu trữ không cho phép điều đó và điều đó có thể dẫn đến hiệu suất kém hơn và một số quirks lạ khác, như PNG đang được cung cấp với loại mime sai. – travis

0

định tuyến asp.net cũng đáp ứng yêu cầu ghi đè url và thậm chí nhiều hơn. Với định tuyến asp.net bạn không chỉ có thể "viết lại url" mà còn tạo các trình xử lý tùy chỉnh cho các yêu cầu khác nhau. Tuy nhiên, định tuyến asp.net yêu cầu ít nhất asp.net sp1.

Điều cơ bản mà bạn làm cho một định tuyến đơn giản để làm việc là thêm một vài trình xử lý tuyến đường trong Application_Start ngay cả bên trong tệp 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")); 

     } 
Các vấn đề liên quan