Was ist routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Ich kann keine .axd-Datei in meinem Projekt finden. Kann ich diese Routenregel entfernen?
Was ist routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Ich kann keine .axd-Datei in meinem Projekt finden. Kann ich diese Routenregel entfernen?
.axd-Dateien existieren physisch nicht. ASP.NET verwendet intern URLs mit .axd-Erweiterungen (ScriptResource.axd und WebResource.axd), die von einem HttpHandler verarbeitet werden.
Daher sollten Sie diese Regel beibehalten, um zu verhindern, dass ASP.NET MVC versucht, die Anforderung zu verarbeiten, anstatt dies vom dedizierten HttpHandler ausführen zu lassen.
IgnoreRoute
die Routing-Konfiguration von MVC besteht darin, sicherzustellen, dass MVC nicht versucht, die Anforderung zu verarbeiten. Dies liegt daran, dass.axd
Endpunkte von einem anderen HTTP-Handler (einem Handler, der nicht Teil von MVC ist) behandelt werden müssen, um Skripts bereitzustellen.Einige Hintergrundinformationen
Wenn Sie diese Datei öffnen:
Sie finden dies in der Datei:
Das sagt der Asp.NET-Laufzeit im Grunde: "Hey asp.net-Typ, wenn eine Anforderung für WebResource.axd eingeht, verwenden Sie AssemblyResourceLoader, um die Anforderung zu verarbeiten."
Bitte beachten Sie, dass WebResource.axd KEINE Datei ist, sondern lediglich eine Zuordnung (wenn ich sagen darf) zu
AssemblyResourceLoader
. Dies ist der Name, unter dem der Handler registriert ist. Auf meinem Computer habe ich die folgenden .axd-Handler gefunden:Ok, was macht dieser Handler?
Sie
AssemblyResourceLoader
wissen, wie man in einer Assembly nach eingebetteten Dateien sucht, damit diese bereitgestellt werden können (senden Sie sie an den Client, dh an einen Browser). Wenn Sie beispielsweise in asp.net-Webformularen die Validierungssteuerelemente verwenden, hängen diese von Javascript ab, um die Fehler auf der Webseite anzuzeigen. Dieses Javascript ist jedoch in eine Assembly eingebettet. Der Browser benötigt das Javascript, damit Sie dies im HTML-Code der Seite sehen können:Sie
AssemblyResourceLoader
finden die Assembly, in die das Javascript eingebettet ist, anhand der Informationen im Querystring und geben das Javascript zurück.Zurück zur Frage
Um die Frage zu beantworten, was ist:
Dies bedeutet für die Routing-Engine, dass wir die Anforderungen, die diesem Routenmuster entsprechen, nicht verarbeiten werden. Mit anderen Worten, wir werden keine
.axd
Anfragen bearbeiten. Warum? Weil MVC selbst ein HttpHandler ist, der.axd
und.aspx
vielen anderen Handlern in der Datei web.config ähnlich ist . Der MVC-Handler weiß nicht, wie die Anforderung verarbeitet werden soll, z. B. das Suchen nach eingebetteten Ressourcen in einer Assembly. ErAssemblyResourceLoader
weiß, wie dies zu tun ist. MVC weiß, wie es geht, und alles, was es tut, geht über den Rahmen dieser Frage und Antwort hinaus.quelle
Die Route mit dem Muster {resource} .axd / {* pathInfo} ist enthalten, um zu verhindern, dass Anforderungen für Webressourcendateien wie WebResource.axd oder ScriptResource.axd an einen Controller übergeben werden.
Link lesen: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
quelle
Schauen Sie sich den folgenden Link an: http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
quelle
Dies sind keine Dateien (sie existieren nicht auf der Festplatte) - es sind nur Namen, unter denen einige HTTP-Handler registriert sind.
quelle