Czym są trasy.IgnoreRoute ("{resource}.axd / {*pathInfo}")
Co to jest routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
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.
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...&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.
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.
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
Zajrzyj do poniższego linku: http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
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.
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