3

Когда пакет зарегистрирован в MVC4, что отвечает за «перехват» входящих http запросов на /bundles/someBundle?v=1hDzBpmYJm4Iu-OjRN1YqS1WeNThVl0kStLJGP8WCr41? также поскольку хэш для каждого пучка вычисляется только один раз (при первом запросе), где в том, что на самом деле состоялось, - и можно вернуть 404 если входящий хэш не соответствуетMVC4 Объединение: где хранится URL для пакета

+1

В чем проблема, которую вы пытаетесь решить? – CodeCaster

+0

@CodeCaster Мне нужно 404 запросов со старыми/устаревшими хэшами –

+0

Не делает ли этот пакет ASP.NET MVC автоматически? – CodeCaster

ответ

1

, что несет ответственность за " перехватывая "входящие http-запросы для ~/bundles/someBundle

~/bundles/someBundle 0 0 нет. Это помощник на стороне сервера, который вы используете (Scripts.Render), который на сервере (в рамках тех же HTTP-запросов) интерпретирует это значение и выплескивает правильный URL-адрес в результате HTML.

также, так как хэш для каждого пучка вычисляется только один раз (при первом запросе), где на самом деле, что состоялось,

Фактическое содержание пучка хранится в кэше на стороне сервера: HttpContext.Cache. Фактический хеш представляет собой хэш SHA256 на этом контенте, который рассчитывается каждый раз, когда вы используете вспомогательный помощник Scripts.Render.


UPDATE:

Это System.Web.Optimization.BundleModule что автоматически регистрируется, когда вы ссылаетесь на сборку System.Web.Optimization, который отвечает за перехват запросов к URL-адресам, как /bundles/someBundle?v=1hDzBpmYJm4Iu-OjRN1YqS1WeNThVl0kStLJGP8WCr41 и возвращает фактическое содержимое.

+0

спасибо, так что отвечает за перехват запроса этого «правильного URL» в полученном HTML (я обновил свой вопрос для большей ясности) –

+0

О, я вижу. Я обновил свой ответ. –

+0

Возможно ли вставить BundleModule, чтобы добавить желаемое поведение? –

0

У вас должен быть файл BundleConfig.cs в папке App_Start в вашем веб-проекте.

Этот раздел в основном связывает URL-адрес "/ bundles/something" с некоторыми скриптами. Когда при доступе к сайту в режиме Release (не отладка активирована), он автоматически объединяет скрипт в один файл в памяти, сводит к минимуму скрипт, добавляет заголовки кэширования в запрос и генерирует хэш содержимого файла.

Если вы находитесь в отладке, все сценарии должны быть разделены, чтобы облегчить отладку.

Вы либо переопределяете пакеты, которые видите в этом файле, либо объявляете свои собственные.

Наслаждайтесь.

0

Причина добавления строки запроса с параметром, основанным на содержимом фактических файлов, которые вы обслуживаете, является решением проблемы кэширования. Кроме того, вы можете информировать браузеры о необходимости кэшировать эти запросы в течение длительного периода времени и ускорять последующие загрузки страниц.
Так что для разработчиков этого механизма связывания нет разницы в том, что этот параметр. Важно только то, что если вы измените содержимое своих скриптов или css-hash изменится, и это заставит клиентский браузер запрашивать новые файлы с сервера.
Что касается того, что отвечает за пересечение этих запросов - есть исходный код MVC, доступный на codeplex, но я предполагаю, что он подключается прямо к маршрутизации.