所以我在磁盘上的这个位置有一个MVC网站:C:\MyApp\Applications\1.0.0.0
,但我在共享位置有静态资源,例如:C:\OtherApps\myapp\css\site.css
如何拦截对我的MVC应用程序的静态文件请求并将路径映射到此备用资源位置?我有IHttpHandler
可以应用于特定路径,但我想对所有静态文件(与MVC路由不匹配的东西)执行此操作。
注意:没有任何内容来自备用位置,因此重写不起作用。
答案 0 :(得分:0)
所以答案是指示ASP.NET通过将其添加到模块部分来处理所有请求:
<modules runAllManagedModulesForAllRequests="true"></modules>
然后放入一个处理所有内容的处理程序(在所有其他处理程序之后):
<add name="static-files" verb="GET" path="*" type="MyApp.HttpHandlers.FileHttpHandler, MyApp"/>
使ASP.NET处理所有内容(包括静态文件)会有轻微的性能损失,但这对于我们的站点是必要的,并且大多数事情都会从CDN中检索出来。