MVC自定义RouteHandler不触发文件

时间:2013-12-03 14:38:59

标签: vb.net mef asp.net-mvc-5 iroutehandler

我有以下代码用自定义路由处理程序注册路由:

 routes.Add(New Route(path & "/{assembly}/{*resource}", New RouteValueDictionary(), New RouteValueDictionary(New With { _
             Key .assembly = AssemblyName _
            }), New EmbeddedContentRouteHandler(PluginAssembly, AssemblyName & "." & path)))

这允许我访问已编译DLL中的嵌入资源,例如:/Content/PluginAssemblyName/File.name

在MVC 3和4中,每次都会触发ProcessRequest函数,但是从MVC 5它不会触发,它只会在我指定目录时触发,这显然会给我一个空引用异常,因为我正在查找文件,而不是目录(显然,由。作为文件命名)

我已经尝试排除.css和.js尝试查看我的自定义路由处理程序是否会触发,没有。在MVC 4项目中进行测试,效果非常好。

开始撕掉我的头发。

为什么RouteHandler不会在MVC 5中启动,而在MVC 4和3中启动?

(这是一个使用MEF的可插拔MVC项目,因为升级路径没有很好地完成,我已经把它带到了MVC 5中)

1 个答案:

答案 0 :(得分:1)

启动ASP.net 4,它不会拦截以扩展名结尾的网址。 按照解决方案here恢复旧行为。

如果要拦截现有文件,请不要忘记在路径配置中添加此行。

routes.RouteExistingFiles = true;