Co jest routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Nie mogę znaleźć żadnego pliku .axd w moim projekcie, czy mogę usunąć tę regułę trasy?
Co jest routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Nie mogę znaleźć żadnego pliku .axd w moim projekcie, czy mogę usunąć tę regułę trasy?
Pliki .axd nie istnieją fizycznie. ASP.NET używa adresów URL z rozszerzeniami .axd (ScriptResource.axd i WebResource.axd) wewnętrznie i są obsługiwane przez HttpHandler.
W związku z tym należy zachować tę regułę, aby uniemożliwić ASP.NET MVC próbę obsłużenia żądania zamiast pozwalać na to dedykowanemu HttpHandler.
IgnoreRoute
konfiguracji routingu MVC jest upewnienie się, że MVC nie próbuje obsłużyć żądania. Dzieje się tak, ponieważ.axd
punkty końcowe muszą być obsługiwane przez inną procedurę obsługi HTTP (procedurę, która nie jest częścią MVC), aby obsługiwać skrypty.Trochę tła
Jeśli otworzysz ten plik:
znajdziesz to w pliku:
To jest po prostu informacja dla środowiska wykonawczego Asp.NET: „Hej, koleś asp.net, jeśli nadejdzie żądanie dotyczące WebResource.axd, użyj AssemblyResourceLoader do przetworzenia żądania”.
Proszę zauważyć, że WebResource.axd NIE jest plikiem, ale po prostu mapą (jeśli mogę tak powiedzieć) do
AssemblyResourceLoader
. Jest to nazwa, pod którą zarejestrowany jest przewodnik. Na moim komputerze znalazłem następujące programy obsługi .axd:Ok, więc co robi ta obsługa?
AssemblyResourceLoader
Wie jak szukać osadzonych plików w zespole więc może to służyć (wysyłanie go do klienta czyli przeglądarkę). Na przykład w formularzach internetowych asp.net, jeśli używasz formantów walidacji, zależą one od niektórych skryptów JavaScript, aby pokazać błędy na stronie sieci Web. Jednak ten javascript jest osadzony w zestawie. Przeglądarka potrzebuje javascript, więc zobaczysz to w html strony:AssemblyResourceLoader
Znajdzie zespół, gdzie JavaScript jest osadzony za pomocą informacji w ciągu kwerendy i zwróci JavaScript.Wracając do pytania
A więc odpowiadając na pytanie, co to jest:
To mówi silnikowi routingu, że nie będziemy przetwarzać żądań, które pasują do tego wzorca trasy. Innymi słowy, nie będziemy przetwarzać
.axd
wniosków. Czemu? Ponieważ sama MVC jest podobna do HttpHandler.axd
i.aspx
wielu innych teleskopowe, które są w pliku web.config. Procedura obsługi MVC nie wie, jak przetworzyć żądanie, na przykład szuka zasobów osadzonych w zestawie -AssemblyResourceLoader
wie, jak to zrobić. MVC wie, jak to zrobić, cóż, wszystko, co robi, co wykracza poza zakres tego pytania i odpowiedzi.źródło
Trasa ze wzorcem {zasób} .axd / {* pathInfo} jest dołączona, aby zapobiec przekazywaniu żądań dotyczących plików zasobów sieci Web, takich jak WebResource.axd lub ScriptResource.axd, do kontrolera.
Przeczytaj link: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
źródło
Spójrz na poniższy link: http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
źródło
To nie są pliki (nie istnieją na dysku) - to tylko nazwy, pod którymi zarejestrowane są niektóre programy obsługi HTTP.
źródło