两者都有Request和Response属性,但我不能编写一个接受HttpContext或HttpContextBase的方法。在某些地方,有一个或另一个可用,所以我需要处理两者。我知道HttpContextWrapper可以向一个方向转换,但仍然......为什么会这样?
答案 0 :(得分:24)
HttpContext
自.NET 1.0以来一直存在。由于向后兼容的原因,他们无法更改该类。 ASP.NET MVC中引入了HttpContextBase
以提供更好的可测试性,因为它可以更容易地模拟/存根它。
答案 1 :(得分:-1)
这是一个老问题,但我遇到了同样的问题,答案是在Gunder的评论中。
创建使用HttpContectBase的方法,然后在想要从代码中调用它时将您的上下文包装在HttpContextWrapper中
public class SomeClass{
... other stuff in your class
public void MyMethod(HttpContextBase contextbase){
...all your other code
}
}
用法
var objSomeClass = new SomeClass();
objSomeClass.MyMethod(new HttpContextWrapper(HttpContext.Current));
我认为如果通过ajax进行此调用,HttpContext.Current将为null,我将研究如何获取上下文并更新此帖子。