从单独的控制台应用程序访问HttpContext.Current.Application

时间:2012-07-25 07:27:00

标签: c# asp.net .net console-application httpcontext

我希望能够从与ASP.NET网站相同的服务器上运行的控制台应用程序中清除特定的缓存项。

如果我引用System.Web然后尝试System.Web.HttpContext.Current我总是得到null,这是有道理的。

我尝试使用此代码,System.Web.HttpContext.Current变为非空。

代码:

HttpContext.Current = new HttpContext(
    new HttpRequest("", "http://tempuri.org", ""),
    new HttpResponse(new StringWriter())
    );

// User is logged in
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity("username"),
    new string[0]
    );

// User is logged out
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity(String.Empty),
    new string[0]
    );

但是HttpContext.Current.Application无法使用。我试着这样做:

..
HttpContext.Current.Application.Add("TestValue", 1);
..
object objReturn = HttpContext.Current.Application.Get("TestValue");
if(objReturn==null)
    Console.WriteLine("objReturn is null");
else
   Console.WriteLine(objReturn);

我的问题是变量objReturn始终为空。 其他人对如何实现这个目标有更好的想法吗?

1 个答案:

答案 0 :(得分:3)

缓存位于ASP.NET辅助进程内部,您无法直接从控制台应用程序访问它。 HttpContext.Current为null,因为您不在Web上下文中。

我会在应用程序本身添加一个网页,允许您清除缓存项目。