Понимание маршрутизации в Global.asax(asp.net-mvc)

В Global.asax, что означает следующее?

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

Ответ 1

Это одна из очень неприятных вещей в изучении MVC - документация для этой функции ужасная - там почти ничего нет: http://msdn.microsoft.com/en-us/library/dd470170(VS.100).aspx.

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

Это позволяет всем файлам something.axd работать за пределами MVC, что в конце концов "{* pathInfo}" позволяет игнорировать строки запросов (это своего рода подстановочный знак).

Обратите внимание, что это не применимо к этому шаблону, поэтому:

trace.axd?clear=1 //excluded from MVC

mySubFolder/customResource.axd //MVC passed to mySubFolderController.customResource()

Полезный. Я не смог найти достойную документацию о том, что есть и не поддерживается в качестве ключевых слов, кроме "{resource}" и "{* pathInfo}"

Однако существует почти полностью недокументированная функция, которая дает вам намного больше контроля над этими игнорируемыми маршрутами:

//ignore all WebForms .aspx/.asmx/.ashx calls anywhere
routes.IgnoreRoute( "{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" } );

Если вы передаете анонимный объект с свойством, это свойство станет ключевым словом, которое вы можете использовать на маршруте.

Вы не можете передать регулярное выражение на маршруте, но вы можете это свойство anon.

Ответ 2

Файл .axd - это виртуальный файл, обрабатываемый обработчиком HTTP. Они используются для (помимо прочего) доставки различных ресурсов на веб-страницу, таких как автоматически созданный javascript для элементов управления AJAX и т.п.

Поскольку это виртуальные файлы, вы не хотите, чтобы механизм маршрутизации пытался сопоставить эти запросы с контроллерами. Вам нужно, чтобы они выполнялись непосредственно ASP.NET.

То, что достигает линия.

Ответ 3

Без этого ASP.NET попытается сопоставить все запросы обработчикам AXD с контроллерами и действиями. Наличие ignoreRoute означает, что URL-адрес не будет отображать URL-адрес контроллера в соответствии с поведением по умолчанию.

Ответ 4

Он сообщает движку маршрутизации игнорировать этот запрос и оставить его в ASP.NET Webforms для обработки вещей.

Это полезно, например, для журнала ELMAH, использующего обработчик elmah.axd.