我有两个不同但紧密相关的ASP.Net web应用程序,它们在某些页面上使用相同的数据。在这两个应用程序中,我使用ObjectDataSource控件,将EnableCaching=设置为“true”,并在两个应用程序中使用相同的CacheKeyDependency值。
我想让它在一个应用程序中插入或删除新记录时,清除两个应用程序中的缓存。我开始只是使用Page.Cache清除缓存,但很快就意识到它不会清除另一个应用程序中的缓存。然后,我向每个应用程序添加了一个WCF服务;每个服务都会清除承载它的应用程序中的缓存对象。除了它没有..。
首先,我发现在WCF中System.Web.HttpContext总是空的。然后,我尝试实例化一个System.Web.Routing.RequestContext对象,但它的HttpContext对象也始终为空。
这一切都归结为:如果我设置了一个Page.Cache对象,如果服务与页面驻留在相同应用程序中,那么该服务是否可以访问相同的缓存对象?
发布于 2011-12-02 00:23:51
是的,您需要为WCF服务启用ASP.NET集成。这涉及到在配置中为serviveHostingEnvironment元素设置aspNetCompatibilityEnabled属性,以及将AspNetCompatibilityRequirementAttribute属性添加到您的服务类以表明您支持它。
有关此主题的更多信息,请访问here on MSDN.
发布于 2011-12-02 00:15:38
在两个应用程序中使用缓存的主要挑战是,缓存可以存储在不同的机器上,或者如果它们在同一台机器上,则可以存储在不同的应用程序池中。
可以这样做的一种方法是允许两个应用程序使用相同的缓存。进程耗尽的分布式缓存的一种解决方案是Appfabric caching。
https://stackoverflow.com/questions/8343999
复制相似问题