Что routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Я не могу найти ни одного файла .axd в своем проекте, могу ли я удалить это правило маршрута?
Что routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
Я не могу найти ни одного файла .axd в своем проекте, могу ли я удалить это правило маршрута?
Файлы .axd физически не существуют. ASP.NET внутренне использует URL-адреса с расширениями .axd (ScriptResource.axd и WebResource.axd), и они обрабатываются HttpHandler.
Следовательно, вы должны соблюдать это правило, чтобы предотвратить попытки ASP.NET MVC обработать запрос вместо того, чтобы позволить выделенному HttpHandler сделать это.
IgnoreRoute
конфигурации маршрутизации MVC - убедиться, что MVC не пытается обработать запрос. Это связано с тем, что.axd
конечные точки должны обрабатываться другим обработчиком HTTP (обработчиком, который не является частью MVC) для обслуживания сценариев.Немного фона
Если вы откроете этот файл:
вы найдете это в файле:
Это в основном говорит среде выполнения Asp.NET: «Привет, чувак, asp.net, если приходит запрос на WebResource.axd, тогда используйте AssemblyResourceLoader для обработки запроса».
Обратите внимание, что WebResource.axd - это НЕ файл, а просто карта (если можно так сказать)
AssemblyResourceLoader
. Это имя, под которым зарегистрирован обработчик. На своей машине я обнаружил следующие обработчики .axd:Итак, что делает этот обработчик?
Он
AssemblyResourceLoader
знает, как искать встроенные файлы в сборке, чтобы обслуживать ее (отправлять клиенту, то есть браузеру). Например, в веб-формах asp.net, если вы используете элементы управления проверкой, они зависят от некоторого javascript для отображения ошибок на веб-странице. Однако этот javascript встроен в сборку. Браузеру нужен javascript, поэтому вы увидите это в HTML-коде страницы:Он
AssemblyResourceLoader
найдет сборку, в которую встроен javascript, используя информацию в строке запроса, и вернет javascript.Вернуться к вопросу
Итак, чтобы ответить на вопрос, что это:
Это говорит механизму маршрутизации, что мы не будем обрабатывать те запросы, которые соответствуют этому шаблону маршрута. Другими словами, мы не будем обрабатывать
.axd
запросы. Зачем? Потому что сам по себе MVC является HttpHandler похож на.axd
и.aspx
и многие другие обработчик , которые находятся в файле web.config. Обработчик MVC не знает, как обрабатывать запрос, например искать встроенные ресурсы в сборке, - онAssemblyResourceLoader
знает, как это сделать. MVC знает, как это сделать, ну и все, что он делает, что выходит за рамки этого вопроса и ответа.источник
Маршрут с шаблоном {resource} .axd / {* pathInfo} включен для предотвращения передачи на контроллер запросов файлов веб-ресурсов, таких как WebResource.axd или ScriptResource.axd.
Ссылка для чтения: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
источник
Взгляните на ссылку ниже: http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
источник
Это не файлы (их нет на диске) - это просто имена, под которыми зарегистрированы некоторые обработчики HTTP.
источник