如何从IIS7和ASP.NET 4.0中的HTTP处理程序调用静态文件处理程序?

时间:2011-01-24 03:56:59

标签: asp.net iis-7

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

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

2 个答案:

答案 0 :(得分:4)

复制StaticFileHandler

应该很容易
  1. 下载反射器
  2. 打开System.Web
  3. 搜索StaticFileHandler
  4. Open方法ProcessRequestInternal()
  5. Open方法SendFile()
  6. 复制你需要的位,基本上归结为这个方法:

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

答案 1 :(得分:0)

This blog post描述何时使用StaticFileHandler:

  

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

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

至少,遵循以上提示适用于我的静态文件。