Статический контент в ASP.NET MVC в IIS 7 - PullRequest
4 голосов
/ 21 декабря 2009

У меня есть приложение ASP.NET MVC 1.0 (.NET 3.5), работающее на II7 и Windows 2008 Server. Приложение развернуто в режиме «Интегрированный конвейер».

В Global.asax.cs я добавил:

public void Application_EndRequest(Object sender, EventArgs e) {
//print URL
}

Метод вызывается даже для статического содержимого (images, css, js) в папках / Content и / Scripts. Это правильно?

MSDN (http://msdn.microsoft.com/en-us/library/bb470252.aspx) говорит:

"The Execute handler stage, where the handler (a module scoped to a URL) is invoked to construct the response. For .aspx files, the PageHandlerFactory handler is used to respond to the request. 
For static files, the native-code StaticFileModule module responds to the request. "

Так должен ли Application_EndRequest () вызываться для статического содержимого?

Как обеспечить, чтобы браузер кэшировал статический контент?

Спасибо.

Ответы [ 2 ]

1 голос
/ 21 декабря 2009

Хотя шаблон по умолчанию для ASP MVC не поощряется, я думаю, что это станет рекомендуемой практикой для размещения всего статического содержимого вашего сайта в одном каталоге. Затем можно отключить конвейер ASP для указанного каталога и разрешить IIS обслуживать содержимое, не отправляя запрос в ASP.NET вообще.

Об этой практике написано в Стиве Сандерсоне и Кази Манзур Рашид . Рекомендуется также в ASP.NET MVC в действии .

1 голос
/ 21 декабря 2009

Из-за функциональности маршрутизации, представленной в MVC, теперь все обрабатывается через ASP.NET, поэтому Application_EndRequest будет вызываться для каждого запроса. Браузер не может увидеть разницу между статическим и динамическим контентом и попытается кэшировать контент, если это возможно и зависит от заголовков HTTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...