【问题标题】:Adding a custom httpmodule to route to MVC or custom handler selectively添加自定义 httpmodule 以选择性地路由到 MVC 或自定义处理程序
【发布时间】:2010-07-20 15:17:11
【问题描述】:

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

我有一个经典的 Web 表单网站,我正试图将其转变为混合 MVC。也就是说,所有新功能都是 MVC。然而,我们有一个自定义的 HTTP 处理程序来处理我们该死的友好 URL,我们不打算改变它。我现在的问题是将我们现有的 url 添加为忽略路由。我不想在 Application_Start() 中将所有(1000 个)作为例外添加。添加一个基于 MVC 的自定义 http 模块和我们现有的自定义处理程序似乎是一个可行的解决方案。该模块本质上将通过检查(现有路由的)XML 文件来路由请求,并决定是 MVC 还是 MyHandler 来处理请求。

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

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      通过实现 IRouteContraint 来创建自定义约束,该约束在您的 XML 文件中查找,然后在映射它们时将其传递给您的路线。

      【讨论】:

      • 谢谢戴夫。我最终将我们的处理程序转换为一个模块,它现在位于 MVC 之上。所有定义为 MVC 的路由现在都被我的模块绕过了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2019-10-15
      • 2023-03-03
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多