从Web Service中的Web应用程序访问缓存对象?

0 asp.net wcf jquery caching web-services

我会说,我已经在.NET开发了多年,和VB/BASIC对于之前多年前言本,但我的背景主要是在桌面应用程序和系统接口 - 我仍然很新的一切这个网络应用程序的东西,所以如果这是一个愚蠢的问题,我在前面道歉.

也就是说,这是我的问题:当您在ASPX页面中创建对象并将其存储在缓存中时,如何从驻留在同一应用程序中的ASMX Web服务访问它?

进一步说明:我有一个Web应用程序,其中包括ASPX页面,ASMX Web服务和由两个对象类组成的类库.当用户登录到应用程序时,他们会配置一些设置,并创建对象并将其存储在system.Web.Caching.Cache对象中.然后在下一页上将自定义对象从缓存中拉出,然后用户对Web服务进行AJAX调用(通过jQuery)以检索一些数据.

问题是在Web服务响应中,我需要根据存储在Web应用程序缓存中的用户创建对象的内容来解析返回的数据.但是,我找不到任何方法从Web服务内部访问缓存的对象.

我有一种潜在的怀疑,即可以将我的自定义.NET对象序列化为JSON对象,并通过AJAX调用将它们传递给Web服务进行反序列化,但坦率地说,我甚至不知道如何开始.加上对象是潜在的30 - 40K的大小和AJAX调用正在取得频繁,每3秒钟一次,所以我真的想避免将所有这些额外的数据与每个调用的开销,尤其是因为数据我需要的是已经存在于Web服务所在的应用程序的内存中.

因此,我再次问:当您在ASPX页面中创建对象并将其存储在缓存中时,如何从驻留在同一应用程序中的ASMX Web服务访问它?

这有意义吗?我疯了吗?缺少明显的东西?任何人都可以提供的见解将非常受到高度赞赏.谢谢!

Vin*_*ayC 6

您可以使用访问当前HTTP管道状态HttpContext.Current.因此,要访问缓存,您需要使用HttpContext.Current.Cache.

BTW,ASMX Web服务被认为是过时的技术(见) -所以我会建议你迁移到WCF服务.如果您使用WCF服务,则必须启用ASP.NET兼容模式(请参阅)才能访问HttpContext.