2008-11-07 34 views
22

Tôi đang sử dụng khuôn khổ .NET 3.5 SP1 và tôi đã triển khai định tuyến URL trong ứng dụng của mình. Tôi đã nhận lỗi javascript:Cách bỏ qua tuyến đường trong định dạng url asp.net định dạng

Error: ASP.NET Ajax client-side framework failed to load.
Resource interpreted as script but transferred with MIME type text/html.
ReferenceError: Can't find variable: Sys

Mà tôi tin là vì định tuyến của tôi là chọn lên các tập tin axd microsoft và không đúng cách gửi xuống javascript. Tôi đã làm một số nghiên cứu và thấy rằng tôi có thể sử dụng Routes.IgnoreRoute, mà nên cho phép tôi bỏ qua axd như dưới đây:

Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

Nhưng, khi tôi thêm dòng để Global.asax của tôi, tôi nhận được lỗi này:

CS1061: 'System.Web.Routing.RouteCollection' does not contain a definition for 'IgnoreRoute' and no extension method 'IgnoreRoute' accepting a first argument of type 'System.Web.Routing.RouteCollection' could be found (are you missing a using directive or an assembly reference?)

Tôi đã nhập không gian tên System.Web.Routing được nhập, bất kỳ ý tưởng nào?

Trả lời

39

Bạn không cần tham khảo ASP.NET MVC. Bạn có thể sử dụng StopRoutingHandler mà thực hiện IRouteHandler như vậy:

routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler())); 

Đây là một phần của .NET 3.5 SP1 và không đòi hỏi MVC. Phương thức IgnoreRoutes là một phương thức mở rộng tiện lợi, là một phần của ASP.NET MVC.

+0

Cảm ơn bạn, đây là một trợ giúp lớn. – Austin

+0

Làm cách nào để bỏ qua các tệp '* .php' trong ASP.NET Core (MVC 6)? Nó khác rất nhiều! – jp2code

1

MapRoute và IgnoreRoute là các phương thức mở rộng trong System.Web.Mvc --- bạn có tham chiếu assembly đó đúng cách không?

+0

Tôi không sử dụng MVC, vì vậy tôi không có tham chiếu lắp ráp đó. Tôi có cần phải tải về lắp ráp MVC riêng biệt để có thể sử dụng IgnoreRoute, hoặc nó nên là một phần của NET 3.5 SP1? – Austin

3

Tôi chỉ muốn thêm rằng bạn cũng cần đảm bảo thứ tự quy tắc Bỏ qua của bạn theo thứ tự đúng nếu không tuyến đường đầu tiên của bạn sẽ được áp dụng trước và IgnoreRoute của bạn sẽ bị bỏ qua.

8

Một câu hỏi cũ nhưng trong trường hợp nó vẫn giúp bất cứ ai, điều này đã làm việc cho tôi:

routes.Ignore("{resource}.axd/{*pathInfo}"); 

Các "Bỏ qua" phương pháp tồn tại, trong khi tiêu chuẩn ASP.NET phương pháp "IgnoreRoute" dường như không (ví dụ: , không sử dụng MVC). Điều này sẽ đạt được kết quả tương tự như mã của Haacked, nhưng hơi sạch hơn ...

+1

Đúng nhưng phương pháp Bỏ qua khả dụng bắt đầu từ .Net 4. OP đang sử dụng 3.5 SP1. –

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