更改 StaticFileHandler 的文件根目录

发布于 2024-12-13 02:31:37 字数 301 浏览 0 评论 0原文

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

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

I have an ASP.NET web project that (among other things) is serving some static files. By default, the framework assumes that all file paths are relative to the location of the web project. However, I'd like the actual root to be loaded from a custom setting in Web.config (e.g. "C:\MyStaticFiles\").

Is there any way to change what StaticFileHandler considers to be the server root directory?
If not, is there an easy way to implement IHttpHandler that will make this change and hand off the rest of the work to the regular StaticFileHandler?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

山川志 2024-12-20 02:31:37

出于性能原因,最好使用 URL 重写,而不是乱用 HttpHandler。 StaticFileHandler 不如 IIS 快。您自己的处理程序将比 StaticFileHandler 慢 10 倍,并且除非您是一位非常非常优秀的工程师,否则它可能会泄漏(或错误地占用)内存。

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

For performance reasons, it's best to use URL rewriting rather than mess with an HttpHandler. StaticFileHandler is not as fast as IIS. Your own handler would be 10x slower than StaticFileHandler, and unless you are a really, really good engineer it would probably leak (or incorrectly hog) memory.

You can call context.RewritePath in the BeginRequest event (or PostAuthorizeEvent, if you use URL authorization) of your HttpModule or HttpApplication to do rewriting on select file types.

娇妻 2024-12-20 02:31:37

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

I think, from performance reasons, it isn't good idea to create different path mapping for static resources. They can be served by IIS directly without any ASP.NET processing if the are located in web site folder.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文