我很确定答案是“你不能这样做”,但如果是这样,那么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杀死了?
答案 0 :(得分:0)
为什么不使用Redirect
或RedirectPermanent
?