2011-01-28 56 views
3

我打算創建一個Sharepoint計時器作業並將其配置爲在我們所有的農場Web前端計算機上運行。Sharepoint計時器作業和對HTTPRuntime緩存對象的訪問

計時器作業將從SP SQL Server實例讀取數據,並希望將其更新到我們擁有的2個Web FTE上的HTTPRuntime緩存對象中。

現在的問題是,計時器作業可以訪問ASP.net緩存對象,還是不會因爲它們是從owstimer.exe運行的?

如果不是,那麼更新2個Web前端的緩存項目的最佳方法是什麼?我應該提到,我們目前沒有將IIS站點配置爲單獨處理。即我們有一個URL來訪問農場,我們的內容交換機會決定哪臺機器獲得它。

那麼它甚至有可能嗎?

回答

1

您無法直接訪問緩存no。時間作業運行在與您的網站運行的應用程序池不同的進程中。

雖然你可以間接做。我能想到的一種方式是在您的網站上創建一個簡單的Web服務,以偵聽您的計時器作業並更新網站上的緩存。

另一種選擇是查看memcached for .NET,這是一個允許您從其他進程訪問緩存的項目。

1

如果你想從WFE訪問它,它不一定是HTTP運行時緩存,對吧?你可以將它存儲在一個列表中?如果這太重量級,效率低下或者聽起來很愚蠢,那麼你可以通過讓定時器作業在SPWebApplication的屬性散列表中添加一個標誌來指示WFE拖動(或失效)緩存項目。這個散列表不能用於存儲項目本身,因爲它僅限於像DateTime,bool,string,int等基元。