Понимание направляющий в Global.asax (asp.net-mvc)

Другая аналогия: давайте скажем, что Вы - разработчик и каждый раз, когда Вам нравитесь Вы книги по информатике порядка с рынка непосредственно - Вы знаете продавцов и их цены. На самом деле Ваша компания могла бы иметь предпочтительного продавца, и Вы связываетесь с ними непосредственно. Все это хорошо работает, но может быть новым продавцом, теперь предлагает лучшие цены, и Ваша компания хочет изменить 'предпочтительного' продавца.

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

Теперь полагают, что мы представляем новый промежуточный шаг, существует чиновник 'библиотеки' в компании, и необходимо пройти его для получения книг. В то время как существует новая зависимость, Вы теперь неуязвимы для любых изменений в продавце: или режим изменений продавца оплаты или сам продавец изменяются, Вы теперь просто помещаете порядок в библиотекаря, и он получает книги для Вас.

10
задан Justin 23 February 2011 в 05:04
поделиться

4 ответа

Это одна из самых неприятных вещей в изучении 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}"

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

11
ответ дан 3 December 2019 в 22:01
поделиться

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

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

Это то, чего добивается строка.

3
ответ дан 3 December 2019 в 22:01
поделиться

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

2
ответ дан 3 December 2019 в 22:01
поделиться

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

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

0
ответ дан 3 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: