Asp.net HttpContext和为WebForms和MVC编写组件

Asp.net HttpContext和为WebForms和MVC编写组件,asp.net,asp.net-mvc,webforms,httpcontext,ihttphandler,Asp.net,Asp.net Mvc,Webforms,Httpcontext,Ihttphandler,我正在编写一个我希望能够在MVC和WebForms web应用程序中使用的组件,但我不确定如何处理HttpContext处理方式之间的差异 我的组件包括一个自定义IHttpHandler(对于WebForms)或一个自定义ActionResult(对于MVC) 所以我有几个问题: 有没有一种方法可以在不破坏模型的情况下将IHttpHandler与MVC结合使用 在尝试编写同时适用于这两种情况的代码时使用HttpContext.Current是否可以接受?对我来说,这似乎有点暴力(不知道为什么)

我正在编写一个我希望能够在MVC和WebForms web应用程序中使用的组件,但我不确定如何处理HttpContext处理方式之间的差异

我的组件包括一个自定义IHttpHandler(对于WebForms)或一个自定义ActionResult(对于MVC)

所以我有几个问题:

  • 有没有一种方法可以在不破坏模型的情况下将IHttpHandler与MVC结合使用
  • 在尝试编写同时适用于这两种情况的代码时使用HttpContext.Current是否可以接受?对我来说,这似乎有点暴力(不知道为什么),但另一种选择是编写和实现一个相当详细的接口来处理HttpContext和ControllerContext之间的抽象
  • 我是不是完全错了
  • 是的,您可以只使用
    routes.IgnoreRoute(“MyHandler.ashx”)
    。它将退回到原来的ASP.NET处理方式,而不会破坏模型
  • 不,我认为使用
    HttpContext.Current
    完全可以。我认为,当您编写自己的处理程序时,MVC并不十分适用。您正在为ASP.NET而不是ASP.NET MVC或ASP.NET Web表单编写代码。很容易使它在两种模型上都工作(OOTB与Web表单一起工作,在MVC中使用IgnoreRoute)。你可能会把事情弄得更复杂!记住,设计模式(如MVC)的唯一目的是简单。不要把事情搞复杂了
  • goto2只需编写一个简单的处理程序