3

我计划创建一个 Sharepoint Timer Job 并将其配置为在我们所有的农场 Web 前端机器上运行。

计时器作业将从 SP SQL Server 实例读取数据,并希望将其更新到我们拥有的 2 个 Web FTE 上的 HTTPRuntime 缓存对象中。

问题是,Timer Job 是否可以访问 ASP.net 缓存对象,还是因为它们是从 owstimer.exe 运行的?

如果不是,那么在 2 个 Web 前端更新缓存项的最佳方法是什么?我应该提一下,我们目前没有将 IIS 站点配置为单独访问。即我们有一个 URL 来访问农场,我们的内容交换机决定哪台机器获取它。

那么它甚至可能吗?

4

2 回答 2

1

您不能直接访问缓存。时间作业在与您的网站运行的应用程序池不同的进程中运行。

你可以间接地做到这一点。我能想到的一种方法是在您的网站上创建一个简单的 Web 服务,用于侦听您的计时器作业并更新网站上的缓存。

另一种选择是研究memcached for .NET,这是一个允许您从其他进程访问缓存的项目。

于 2011-01-28T18:24:00.500 回答
1

如果您想从 WFE 访问它,它不必是 HTTP 运行时缓存,对吧?您可以将其存储在列表中吗?如果这对您来说太重量级、效率低下或听起来很傻,那么您可以通过让计时器作业将标志填充到 SPWebApplication 的 Properties 哈希表中来向 WFE 发出信号以拉动(或使缓存项无效)。此哈希表不能用于存储项目本身,因为它仅限于 DateTime、bool、string、int 等原语。

于 2011-01-30T01:48:35.057 回答