Немного фона
Если вы откроете этот файл:
%WINDIR%\Microsoft.NET\Framework\version\Config\Web.config
, вы найдете его в файле:
<add path="WebResource.axd"
verb="GET"
type="System.Web.Handlers.AssemblyResourceLoader"
validate="True" />
В основном это говорит о времени выполнения Asp.NET: «Привет, чувак asp.net, если приходит запрос на WebResource.axd, тогда используйте AssemblyResourceLoader для обработки запроса».
Пожалуйста, обратите внимание, , что WebResource.axd - это НЕ файл , а просто карта (если можно так выразиться) для AssemblyResourceLoader
.Это имя, под которым зарегистрирован обработчик.На моей машине я нашел следующие обработчики .axd:
<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"
Хорошо, так что же делает этот обработчик?
AssemblyResourceLoader
знает, как выглядетьдля встроенных файлов в сборке, чтобы он мог обслуживать ее (отправлять клиенту, т.е. в браузер).Например, в веб-формах asp.net, если вы используете элементы управления валидацией, они зависят от некоторого javascript для отображения ошибок на веб-странице.Однако этот javascript встроен в сборку.Браузеру нужен javascript, поэтому вы увидите это в html-странице:
<script src="/YourSite/WebResource.axd?d=fs7zUa...&t=6342..." type="text/javascript"></script>
AssemblyResourceLoader
найдет сборку, в которую встроен javascript, используя информацию в строке запроса, и вернет javascript.
Вернуться к вопросу
Итак, чтобы ответить на вопрос:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Это говорит механизму маршрутизации, что мы не будем обрабатывать те запросы, которые соответствуют этому шаблону маршрута.Другими словами, мы не будем обрабатывать .axd
запросов.Зачем?Поскольку MVC сам по себе является HttpHandler, похожим на .axd
и .aspx
и многими другими обработчиками, которые находятся в файле web.config.Обработчик MVC не знает, как обрабатывать запрос, например, искать встроенные ресурсы в сборке - AssemblyResourceLoader
знает, как это сделать.MVC знает, как это сделать, и все, что он делает, выходит за рамки этого вопроса и ответа.
Здесь - отличная статья, в которой более подробно объясняется .axd
.