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