将请求传递回ActionResult内的IIS

时间:2011-11-01 00:51:14

标签: asp.net iis integrated-pipeline-mode response.transmitfile

我很确定答案是“你不能这样做”,但如果是这样,那么ASP.NET MVC就是非常有缺陷的。

我有一个需要提供静态文件的ActionResult(文件名在代码中确定)。出于性能原因(并且因为我不想重新实现接受字节和缓存头的HTTP规范),我想将请求交给IIS。像上下文中的HttpModule一样,当你给它一个静态文件的名字时,它会做。

除非需要在ActionResult内部发生,而不是在PostAuthorizeRequest期间发生。

查看FileStreamResult和FilePathResult类,很明显它们只实现HTTP 200.InstartFile()很好,但它不是内核缓存,它不处理Accept-bytes,If-Modified-Since或者Etags。

我们已经被告知几乎可以解码IIS在提供文件方面有多好,以及集成管道的重要性,IIS6上的恶意通配符映射对于性能等等。

现在我们回到同一条船上 - 无法让IIS从ActionResult提供静态文件。 (不,TransmitFile不算)。

我甚至开始看到MS建议您将静态内容放在单独的服务器上。

请告诉我,我错了,某处有一种神奇的方法可以做到这一点。或者集成管道梦被MVC杀死了?

1 个答案:

答案 0 :(得分:0)

为什么不使用RedirectRedirectPermanent