2013-03-12 47 views
7

当你在你的应用程序,像这样的图像标签:ASP.NET(WebForms或MVC)应用程序中的哪个代码组件提供图像等网站资源?

<img src = @Url.Content("~/foo/bar.jpg") /> 

或像这样:

<asp:image src = "~/foo/bar.jpg" /> 

或像这样:

<input type = "image" ...> 

,如果发生这种情况,是一个ASP.NET应用程序(Web窗体或MVC与问题无关,我认为,因为服务图像的代码必须相同),哪个特定组件为图像请求提供服务?

它是Web服务器(IIS还是Visual Studio的内部Web服务器),还是Microsoft编写的ASP.NET HttpHandler?

我记得曾经有一个用于处理ASP.NET 2.0资源文件的处理程序。那也是服务于图像的吗?它叫什么?

我为什么要问这个问题/我所试图做的

我有一个ASP.NET MVC应用程序,我想要写我自己的自定义的HttpHandler或控制器提供静态资产像这样的图像他们得到缓存。

什么我打算做的事情几乎完全相似http://blog.hompus.nl/2011/03/11/make-your-browser-cache-the-output-of-an-httphandler/http://archive.msdn.microsoft.com/ResourceCache

我要确保,如果有已经被微软写一个,我可能需要采取一些预防措施,而在发回的HTTP标头回应只是为了让微软的内置httpHandler集合的头部不会违背我设定的内容。

回答

1

好吧,在我看来,ASP.NET并不关心任何静态资源,因此,它没有注册任何这些资源的IIS ISAPI筛选器。

这意味着,作为一个想为静态资源编写特定处理程序的开发人员,您几乎可以自由地执行任何您想要的操作。

2

默认情况下,ASPX页面(包括静态资源在其中,如图片)由默认HttpHandler,这是the PageHandlerFactory class一个实例是提供服务的所有请求:动态创建

实例来处理ASP请求.NET 文件。 PageHandlerFactory类是ASP.NET页面的默认处理程序工厂 实现。

正如你可以看到the MSDN article on HttpHandlers and HttpModules,主 “内置” 的处理程序是指那些

  • 标准ASP.NET文件(的.aspx)
  • Web服务(的.asmx),
  • 通用,非UI处理程序(.ashx)和
  • 一个用于处理跟踪(trace.axd)。

没有一个具体处理图像请求。所以你应该很好=)

+0

非常感谢。 :-) 它说图像和静态资源是由默认的提供ASPX页面的HttpHandler提供的? – 2013-03-14 12:25:20

+0

@ WaterCoolerv2问题是,.aspx页面的请求由默认的HttpHandler处理。将图像嵌入到aspx页面时,没有特别的处理方式。如果它们是服务器控件(''),它们将作为常规ASP.NET页面生命周期的一部分进行处理。即使它们只是静态的''元素,它们仍然会被处理并插入到由HttpHandler生成的呈现的HTML标记中。现在,如果您直接从Web服务器请求图像(并且不请求aspx页面),则会处理该图像,但是IIS已设置为处理该图像。 – jadarnel27 2013-03-14 13:25:46

相关问题