2

我很确定答案是“你不能这样做”,但如果是这样,那么 ASP.NET MVC 就存在严重缺陷。

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

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

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

我们几乎被告知 IIS 在服务文件方面有多好,集成管道有多重要,IIS6 上的邪恶通配符映射对性能有多重要,等等。

现在我们又回到了同一条船上——没有办法让 IIS 从 ActionResult 中提供静态文件。(不,TransmitFile 不算在内)。

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

请告诉我我错了,有一种神奇的方法可以做到这一点。还是集成的白日梦被MVC杀死了?

4

1 回答 1

0

你为什么不使用Redirector RedirectPermanent

于 2011-11-01T01:01:27.520 回答