我有一个ASP.NET Web项目(除其他外)正在提供一些静态文件。默认情况下,框架假定所有文件路径都相对于Web项目的位置。但是,我希望从Web.config中的自定义设置加载实际的根(例如"C:\MyStaticFiles\"
)。
有没有办法改变StaticFileHandler
认为是服务器根目录的内容?
如果没有,是否有一种简单的方法可以实现IHttpHandler
进行此更改,并将其余工作交给常规StaticFileHandler
?
答案 0 :(得分:2)
出于性能原因,最好使用URL重写而不是使用HttpHandler。 StaticFileHandler没有IIS那么快。你自己的处理程序比StaticFileHandler慢10倍,除非你是一个非常非常好的工程师,否则它可能会泄漏(或错误地记录)内存。
您可以在您的HttpModule或HttpApplication的BeginRequest事件(或PostAuthorizeEvent,如果您使用URL授权)中调用context.RewritePath来重写选择的文件类型。
答案 1 :(得分:0)
我认为,从性能方面来看,为静态资源创建不同的路径映射并不是一个好主意。如果IIS位于网站文件夹中,它们可以直接由IIS提供,无需任何ASP.NET处理。