Czym są trasy.IgnoreRoute ("{resource}.axd / {*pathInfo}")

Co to jest routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

Nie mogę znaleźć żadnego .plik axd w moim projekcie, czy mogę usunąć tę regułę trasy?
Author: tereško, 2012-01-26

5 answers

.pliki axd nie istnieją fizycznie. ASP.NET używa adresów URL z .axd extensions (ScriptResource.axd i WebResource.axd) wewnętrznie i są obsługiwane przez HttpHandler.

Dlatego należy zachować tę zasadę, aby zapobiec ASP.NET MVC od próby obsługi żądania zamiast pozwolić dedykowanemu HttpHandler zrobić to.

 82
Author: Roy Dictus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-28 13:58:21

Niektóre Tło

Jeśli otworzysz ten plik:

%WINDIR%\Microsoft.NET\Framework\version\Config\Web.config

Znajdziesz to w pliku:

<add path="WebResource.axd"
     verb="GET"
     type="System.Web.Handlers.AssemblyResourceLoader"
     validate="True" />

To w zasadzie mówi Asp.NET czas trwania: "Hej asp.net Stary, Jeśli pojawi się prośba o WebResource.następnie axd używa AssemblyResourceLoader do przetworzenia żądania."

Proszę zrobić zwróć uwagę, że WebResource.axd nie jest plikiem , ale po prostu mapą (jeśli mogę powiedzieć) do AssemblyResourceLoader. Jest to nazwa, pod którą zarejestrowany jest handler. Na mojej maszynie znalazłem następujące .AXD handlers:

<add path="eurl.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
<add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />
<add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
<add verb="*" path="*_AppService.axd" 

Ok, więc co robi ten opiekun?

AssemblyResourceLoader wie, jak szukać osadzonych plików w asemblemie, aby móc je obsługiwać(wysłać je do klienta np. przeglądarki). Na przykład w asp.net formularze internetowe, Jeśli używasz kontroli walidacji, zależą one od niektórych javascript, aby pokazać błędy na stronie internetowej. Jednak, że javascript jest osadzony w złożeniu. Przeglądarka potrzebuje javascript więc zobaczysz to w html strony:

<script src="/YourSite/WebResource.axd?d=fs7zUa...&amp;t=6342..." type="text/javascript"></script>

AssemblyResourceLoader znajdzie asemblację, w której javascript jest osadzony, używając informacji z querystring i zwróci javascript.


Wróć do pytania

Więc odpowiadając na pytanie, co to jest:

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

To mówi silnikowi routingu, że nie będziemy przetwarzać tych żądań, które pasują do tego wzorca trasy. Innymi słowy, nie będziemy przetwarzać .axd wniosków. Dlaczego? Ponieważ sam MVC jest Httphandlerem podobnym do .axd i .aspx i wielu innych programów obsługi, które są w sieci.plik konfiguracyjny. Obsługa MVC nie wie, jak przetworzyć żądanie, takie jak szukanie osadzonych zasobów w złożeniu - AssemblyResourceLoader wie, jak to zrobić. MVC wie, jak zrobić, dobrze wszystko, co robi, co jest poza zakresem tego pytania i odpowiedzi.

 36
Author: CodingYoshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-01 15:09:21

Trasa ze wzorem {zasoby}.axd / {*pathInfo} jest dołączone, aby zapobiec żądaniom plików zasobów internetowych, takich jak WebResource.axd lub ScriptResource.axd od przekazania do kontrolera.

Czytaj link: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx

Możesz również określić, że routing nie powinien obsługiwać niektórych żądań URL. Uniemożliwiasz routingowi obsługę niektórych żądań, definiując trasę i określając, że klasa StopRoutingHandler powinna być używana do obsługi tego wzorca. Gdy żądanie jest obsługiwane przez obiekt StopRoutingHandler, obiekt StopRoutingHandler blokuje dodatkowe przetwarzanie żądania jako trasę. Zamiast tego żądanie jest przetwarzane jako ASP.NET strona, serwis internetowy lub inne ASP.NET punkt końcowy. Możesz użyć RouteCollection.Ignoruj metodę (lub RouteCollectionExtensions.IgnoreRoute dla aplikacji MVC) do tworzenia tras wykorzystujących StopRoutingHandler class.

 18
Author: Kumar Manish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-25 07:48:15
 7
Author: TwTw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 10:26:18

To nie są pliki (nie istnieją na dysku) - są to tylko nazwy, pod którymi rejestrowane są niektóre programy obsługi HTTP.

 7
Author: Kumar Manish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-22 10:42:36