2008-11-07 63 views
22

我使用.NET 3.5 SP1框架,並且在我的應用程序中實現了URL路由。我得到的JavaScript錯誤:如何忽略asp.net表單中的路由url routing

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

我相信這是因爲我的路由拿起微軟AXD文件,無法正常發送下來的JavaScript。我做了一些研究,發現我可以用Routes.IgnoreRoute,這應該讓我忽略AXD象下面這樣:

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

但是,當我再補充一點線到我的Global.asax中我得到這個錯誤:

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?)

我有System.Web.Routing命名空間導入,任何想法?

回答

39

您不需要引用ASP.NET MVC。你可以用它實現IRouteHandler像這樣的StopRoutingHandler

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

這是.NET 3.5 SP1的一部分,不需要MVC。 IgnoreRoutes方法是一種便利的擴展方法,它是ASP.NET MVC的一部分。

+0

謝謝,這是一個巨大的幫助。 – Austin 2008-11-10 14:20:09

+0

如何忽略ASP.NET Core(MVC 6)中的* .php文件?它有很大的不同! – jp2code 2016-06-21 13:27:59

1

MapRoute和IgnoreRoute是System.Web.Mvc中的擴展方法---您是否正確引用了該程序集?

+0

我沒有使用MVC,所以我沒有引用該程序集。我需要單獨下載MVC程序集才能使用IgnoreRoute,或者它應該是.NET 3.5 SP1的一部分嗎? – Austin 2008-11-07 20:56:36

3

我只想補充一點,您還需要確保您的IgnoreRoutes規則的順序處於正確的順序,否則您的第一條路線將首先應用並且您的IgnoreRoute將被...忽略。

8

一個老問題,但在情況下,它仍然可以幫助任何人,這個工作對我來說:

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

「忽略」方式存在,而在標準的ASP.NET出現「IgnoreRoute」法不(即,不使用MVC)。這將達到與Haacked的代碼相同的結果,但稍微更清潔...