如何在Web窗体应用程序中使用System.Web.Abstractions?

时间:2009-06-21 12:27:57

标签: asp.net webforms system.web.abstractions

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

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

因为有意进入MVC我认为让我们的自定义上下文与System.Web.Abstractions程序集中附带的HttpContextBase(及相关类)一起工作是个好主意。

我不想设计一个解决当前问题的解决方案,但需要重新编写以实现MVC的可测试性(并且在MCV中无用)但是到目前为止我所取得的并不是真的好像很有用。

问题是我找不到任何关于如何实现这一点的好例子,如何扩展HttpContextWrapperHttpContextBase以便您可以保持关注的分离。

2 个答案:

答案 0 :(得分:0)

为HttpContext编写一些扩展方法是不够的?我已经在我当前的应用程序中完成了这项工作并且运行良好。我想这取决于你想要自定义HttpContext类的复杂程度,以及它是否旨在表示与标准HttpContext表示的根本不同的东西。我不能真的想到这个场景。也许你可以详细说明你的自定义HttpContext会是什么样的?

答案 1 :(得分: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));