2008-11-07 2 views
22

Я использую среду .NET 3.5 с пакетом обновления 1 (SP1), и я реализовал маршрутизацию URL-адресов в своем приложении. Я получаю ошибки JavaScript:Как игнорировать маршрут в формах asp.net URL-адрес маршрутизации

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

Что я считаю, потому что моя маршрутизация подбирая Microsoft 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. Вы можете использовать StopRoutingHandler, который реализует IRouteHandler так:

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

Как я могу игнорировать файлы `* .php` в ASP.NET Core (MVC 6)? Это очень много! – 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, но немного чист ...