添加自定义httpmodule以有选择地路由到MVC或自定义处理程序

时间:2010-07-20 15:17:11

标签: c# asp.net-mvc

我不确定是否已经问过这个问题。好吧,这是我的问题。

我有一个经典的Web Forms网站,我正试图变成混合MVC。也就是说,所有新功能都是MVC。但是,我们有一个自定义的HTTP处理程序,它可以处理我们非常友好的URL,而且我们不打算进行更改。我现在的问题是将我们现有的URL添加为忽略路由。我不想在Application_Start()中添加它们的所有(1000个)作为异常。添加一个自定义的http模块,它将站在MVC和我们现有的自定义处理程序之上似乎是一个可行的解决方案。该模块实际上将通过检查(现有路由的)XML文件来路由请求,并决定MVC或MyHandler是否会处理请求。

有人试过吗?我无法将请求卸载到适当的处理程序。

2 个答案:

答案 0 :(得分:2)

实现此目的的最佳方法是将HttpHandler转换为HttpModule,并确保所有请求在传递给MVC之前通过您的自定义模块。由于MVC是作为模块实现的,因此它会在到达您的处理程序之前始终拦截您的请求。

答案 1 :(得分:1)

通过实现查看XML文件的IRouteConstraint创建自定义约束,然后在映射时将其传递给路径。