Asp.net WCF缓存与页面缓存

Asp.net WCF缓存与页面缓存,asp.net,wcf,caching,Asp.net,Wcf,Caching,我有两个不同但密切相关的ASP.Net web应用程序,它们在某些页面上使用相同的数据。在这两个应用程序中,我都使用ObjectDataSource控件,使用EnableCaching=“true”,并在两个应用程序中使用相同的CacheKeyDependency值 我希望这样,当在一个应用程序中插入或删除新记录时,它会清除两个应用程序中的缓存。我一开始只是使用Page.cache清除缓存,但很快就意识到它不会清除其他应用程序中的缓存。然后我向每个应用程序添加了一个WCF服务;每个服务都会清除其

我有两个不同但密切相关的ASP.Net web应用程序,它们在某些页面上使用相同的数据。在这两个应用程序中,我都使用ObjectDataSource控件,使用EnableCaching=“true”,并在两个应用程序中使用相同的CacheKeyDependency值

我希望这样,当在一个应用程序中插入或删除新记录时,它会清除两个应用程序中的缓存。我一开始只是使用Page.cache清除缓存,但很快就意识到它不会清除其他应用程序中的缓存。然后我向每个应用程序添加了一个WCF服务;每个服务都会清除其承载的应用程序中的缓存对象。除了它不

首先,我发现System.Web.HttpContext在WCF中总是空的。然后我尝试实例化System.Web.Routing.RequestContext对象,但其HttpContext对象也始终为空


这一切归结为:如果我设置了一个Page.Cache对象,WCF服务能否访问同一个Cache对象,如果该服务与页面托管在同一个应用程序中?

两个应用程序中的Cache面临的主要挑战是,缓存可以存储在不同的机器上,或者如果它们位于同一台机器上,在不同的应用程序池中


一种方法是允许两个应用程序使用相同的缓存。一种解决进程外分布式缓存的方法是。

是的,您需要为WCF服务启用ASP.NET集成。这涉及到在config中为
ServiceHostingEnvironment
元素设置
aspNetCompatibilityEnabled
属性,以及向服务类添加
AspNetCompatibilityRequirementAttribute
属性,以指示您支持它


关于这个主题的更多信息可以在这里找到

是的,在我的情况下,绝对不值得进入AppFabric之类的领域。我已经在这上面花了足够的时间;我只需要停止缓存,或者将缓存过期时间设置得很低,比如一两分钟。谢谢你!令人惊叹的!这正是我需要的。非常感谢。