2

我正在开发一个 Web 表单应用程序,该应用程序打算移植到 MVC 以用于其 vNext +1 版本。但目前它是一个 .NET 3.5 SP1 Web 表单应用程序。

我想要有我们自己的上下文,它在标准 HttpContext/ HttpRequest/ HttpResponse/ 等对象之上提供了一些帮助。另外,我希望将 HttpContext 类与上下文分离。

因为打算使用 MVC,所以我认为让我们的自定义上下文与 System.Web.Abstractions 程序集中附带的 HttpContextBase(和相关类)一起工作是个好主意。

我不想设计一个解决方案来解决目前的一些问题,但需要重新编写以在 MVC 中实现可测试性(并且在 MCV 中毫无用处)但我到目前为止所取得的成就似乎并不是有用。

问题是我找不到任何好的例子来说明如何实现这一点,如何扩展HttpContextWrapper,或者HttpContextBase你可以保持关注点分离。

4

2 回答 2

0

为HttpContext写一些扩展方法还不够吗?我已经在我当前的应用程序中做到了这一点,并且效果很好。我想这取决于您希望自定义 HttpContext 类有多复杂,以及它是否旨在表示与标准 HttpContext 所表示的内容根本不同的东西。不过,我真的想不出一个场景。也许您可以详细说明您的自定义 HttpContext 的外观?

于 2009-06-21T17:42:09.743 回答
0

您不需要重写 HttpContextWrapper 或 HttpContextBase 来实现此目的,而是让您的自定义上下文与 HttpContextBase 对象一起工作,这样您就可以单独测试您的自定义上下文。

public class MyContext
{

    // helper methods work with this context
    HttpContextBase _ctx;

    public MyContext(HttpContextBase context)
    {
        _ctx = context;
    }


}

当您在实际应用程序中创建自定义上下文时,只需使用初始化

new MyContext(new HttpContextWrapper(HttpContext.Current));
于 2009-07-27T00:28:29.997 回答