我正在开发一个Web表单应用程序,打算将其移植到MVC以获取其vNext +1版本。但目前它是.NET 3.5 SP1 Web表单应用程序。
我想拥有自己的 context ,它在标准的HttpContext / HttpRequest / HttpResponse / etc对象之上提供了一些帮助。另外,我想要将HttpContext类与上下文分离。
因为有意进入MVC我认为让我们的自定义上下文与System.Web.Abstractions程序集中附带的HttpContextBase(及相关类)一起工作是个好主意。
我不想设计一个解决当前问题的解决方案,但需要重新编写以实现MVC的可测试性(并且在MCV中无用)但是到目前为止我所取得的并不是真的好像很有用。
问题是我找不到任何关于如何实现这一点的好例子,如何扩展HttpContextWrapper
或HttpContextBase
以便您可以保持关注的分离。
答案 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));