HttpContext.Current返回的实例
System.Web.HttpContext,该实例不扩展
System.Web.HttpContextbase。
HttpContextbase后来添加,以解决
HttpContext难以嘲笑的问题。这两个类基本上是不相关的(
HttpContextWrapper用作它们之间的适配器)。
幸运的是,
HttpContext它本身就是可伪造的,足以替换
IPrincipal(User)和
IIdentity。
即使在控制台应用程序中,以下代码也会按预期运行:
HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) );// User is logged inHttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] );// User is logged outHttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );


