2012-08-07 41 views
0

我正在使用HttpRuntime.Cache缓存部分我的网站。在另一个进程(控制台)中,我试图通过调用位于我的站点中的删除缓存功能来删除一些缓存键。问题是在控制台缓存和站点缓存之间似乎没有连接,因为站点缓存似乎没有被删除。我可能做错了。请帮助?C#,MVC - 试图从控制台删除站点缓存

回答

4

它们在不同的进程中运行,并且HttpRuntime包含在正在运行的进程/上下文中。因此,您的控制台应用程序正在清除Cache,但它是控制台进程的缓存,而不是Web应用程序的进程(它具有单独的HttpRuntime)。

如果希望控制台应用程序清除Web应用程序的缓存,则需要在控制台应用程序可以调用的Web应用程序中公开一个操作方法。在该操作方法中,您可以清除HttpRuntime.Cache

一些伪代码为您的控制器的操作方法可能是什么样子:

[HttpDelete] 
public ActionResult ClearCache(){ 
    HttpRuntime.Cache.Clear(); 
} 
+0

我打电话说我的web应用程序位于(我的控制台proccess正在阅读该网站的应用程序的DLL的功能)。但它不起作用,既不从那里写入缓存。 – 2012-08-07 12:49:53

+0

读取另一个项目的DLL不会将您连接到该项目的进程。您需要通过操作方法或服务电话向您的网站进行远程调用,以使网站清除其缓存。您的控制台应用无法真正清除缓存 - 您需要向网络应用发出命令以清除缓存。 – 2012-08-07 12:55:01

+0

好吧我想我已经开始明白了。你能帮助我一个来自过程调用的代码示例吗? – 2012-08-07 13:24:50