2011-01-24 67 views
1

我为自动生成文件创建自定义HTTP处理程序,我想告诉IIS7像普通静态文件一样提供当前请求,因为我需要使用IIS和web.config文件来控制当前请求文件的压缩设置和任何其他HTTP标头。如何从IIS7和ASP.NET 4.0中的HTTP处理程序调用静态文件处理程序?

我知道。 ASP.net中有一个名为[StaticFileHandler] [1]的内部类。但我无法访问它。或者你有任何其他的方式来这样工作。 [1]:http://msdn.microsoft.com/en-us/library/ms404287.aspx

回答

4

这应该是很容易复制StaticFileHandler

  1. 下载反光
  2. 开放的System.Web
  3. 搜索StaticFileHandler
  4. Open方法ProcessRequestInternal()
  5. 开放方法SendFile()

复制你需要的位,基本上它归结为这种方法:

context.Response.TransmitFile(physicalPath, offset, length); 
0

This blog post描述了当StaticFileHandler将用于:

如果您没有修改任何(如作为缓存),并且您还没有向响应流写入内容,并且响应流没有过滤器(如压缩),并且您正在运行过程中在IIS6中然后请求被传回给IIS进行处理。

据我测试,这对IIS7也是如此。我不太确定如何,但是如果你不在自己的处理程序中处理某个请求,它应该传递给IIS。任何人都可以证实吗?

至少,以上提示为我的静态文件工作。

相关问题