IIS 7中ASP.NET MVC中的静态内容

时间:2009-12-21 19:38:07

标签: asp.net-mvc iis-7

我在II7和Windows 2008 Server上运行ASP.NET MVC 1.0应用程序(.NET 3.5)。 该应用程序以“集成管道”模式部署。

在Global.asax.cs中我添加了:

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

即使对于/ Content和/ Scripts文件夹中的静态内容(images,css,js),也会调用该方法。 这是正确的吗?

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 个答案:

答案 0 :(得分:1)

由于MVC中引入了路由功能,现在通过ASP.NET处理所有内容,因此将为每个请求调用Application_EndRequest。浏览器无法看到静态或动态内容之间的差异,并会尝试根据HTTP标头缓存内容。

答案 1 :(得分:1)

虽然ASP MVC默认模板不鼓励我,但我认为将所有网站的静态内容放在一个目录中是一种推荐的做法。然后,您可以禁用所述目录的ASP管道,并允许IIS在不将请求传递给ASP.NET的情况下提供内容。

此练习已在Steve SandersonKazi Manzur Rashid's博客上撰写。在ASP.NET MVC in Action中也建议使用它。