2008-11-07 4 views
22

Ich benutze das .NET 3.5 SP1-Framework und ich habe URL-Routing in meiner Anwendung implementiert. Ich war immer JavaScript-Fehler:Wie Route in asp.net Forms URL-Routing ignorieren

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

Was ich glaube, ist, weil mein Routing ist die Microsoft-axd Dateien Aufnehmen und nicht richtig JavaScript sendet nach unten. Ich habe einige Nachforschungen und fand, dass ich Routes.IgnoreRoute verwenden könnte, die es erlauben, sollte mir die axd wie unten zu ignorieren:

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

Aber, wenn ich diese Zeile zu meinem Global.asax füge ich diesen Fehler:

Ich habe den Namespace System.Web.Routing importiert, irgendwelche Ideen?

Antwort

39

Sie müssen nicht auf ASP.NET MVC verweisen. Sie können die StopRoutingHandler verwenden, die IRouteHandler wie so implementiert:

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

Dieser Teil von .NET 3.5 SP1 und MVC nicht erforderlich. Die IgnoreRoutes-Methode ist eine praktische Erweiterungsmethode, die Teil von ASP.NET MVC ist.

+0

Danke, das war eine große Hilfe. – Austin

+0

Wie würde ich '* .php' Dateien in ASP.NET Core (MVC 6) ignorieren? Es ist viel anders! – jp2code

1

MapRoute und IgnoreRoute sind Erweiterungsmethoden in System.Web.Mvc --- Haben Sie diese Assembly ordnungsgemäß referenziert?

+0

Ich bin nicht mit MVC, also habe ich nicht diese Baugruppe verwiesen. Muss ich die MVC-Assembly separat herunterladen, um IgnoreRoute verwenden zu können, oder sollte sie Teil von .NET 3.5 SP1 sein? – Austin

3

Ich möchte nur hinzufügen, dass Sie auch sicherstellen müssen, dass die Reihenfolge Ihrer IgnoreRoutes Regel in der richtigen Reihenfolge ist, sonst wird Ihre erste Route zuerst angewendet und Ihre IgnoreRoute wird ... gut ignoriert werden.

8

Eine alte Frage, aber falls es noch jemand hilft, das für mich gearbeitet:

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

Das „Ignorieren“ Methode existiert, während in Standard ASP.NET die „IgnoreRoute“ Methode scheint nicht zu (dh , nicht mit MVC). Dies wird das gleiche Ergebnis wie Haacked Code, aber ist etwas sauberer ...

+1

Wahr, aber die Ignore-Methode ist ab .Net 4 verfügbar. OP verwendet 3,5 SP1. –