2011-01-28 60 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等基元。