更改StaticFileHandler的文件根目录

时间:2011-11-02 14:34:19

标签: c# asp.net staticfilehandler

我有一个ASP.NET Web项目(除其他外)正在提供一些静态文件。默认情况下,框架假定所有文件路径都相对于Web项目的位置。但是,我希望从Web.config中的自定义设置加载实际的根(例如"C:\MyStaticFiles\")。

有没有办法改变StaticFileHandler认为是服务器根目录的内容? 如果没有,是否有一种简单的方法可以实现IHttpHandler进行此更改,并将其余工作交给常规StaticFileHandler

2 个答案:

答案 0 :(得分:2)

出于性能原因,最好使用URL重写而不是使用HttpHandler。 StaticFileHandler没有IIS那么快。你自己的处理程序比StaticFileHandler慢10倍,除非你是一个非常非常好的工程师,否则它可能会泄漏(或错误地记录)内存。

您可以在您的HttpModule或HttpApplication的BeginRequest事件(或PostAuthorizeEvent,如果您使用URL授权)中调用context.RewritePath来重写选择的文件类型。

答案 1 :(得分:0)

我认为,从性能方面来看,为静态资源创建不同的路径映射并不是一个好主意。如果IIS位于网站文件夹中,它们可以直接由IIS提供,无需任何ASP.NET处理。