2012-07-25 103 views
2

我希望能夠從與ASP.NET網站相同的服務器上運行的控制檯應用程序中清除特定的緩存項。從單獨的控制檯應用程序訪問HttpContext.Current.Application

如果我參考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始終爲空。 任何人有更好的想法如何實現這一目標?

+2

另一種方法如暴露控制檯應用程序可以調用以刪除緩存項的Web服務嗎? – Tuan 2012-07-25 07:38:13

+0

@Tuan你能給我一個關於公開Web服務的示例解決方案,控制檯應用程序可以調用它來移除緩存項目嗎? – NNNN 2012-07-25 07:47:43

回答

3

緩存位於ASP.NET工作進程內部,無法直接從控制檯應用程序訪問它。由於您不在Web上下文中,因此HttpContext.Current爲null。

我會添加一個網頁到應用程序本身,允許您清除緩存項目。

+0

感謝您的建議,我正在嘗試這個。可以給我一個樣本解決方案嗎? – NNNN 2012-07-25 08:16:40

+0

帶按鈕的簡單頁面會自動嘗試自己做,並在這裏問你是否遇到問題 – 2012-07-25 08:30:44

相關問題