如何从WCF返回HttpContext.Current.Cache?

如何从WCF返回HttpContext.Current.Cache?,wcf,iis,caching,Wcf,Iis,Caching,我在IIS中托管了一个WCF服务,希望返回驻留在IIS缓存(HttpContext.Current.cache)中的数据 此服务应返回的最合适的类型是什么 当然,无论您存储在缓存中的是哪种类型,它都应该是可序列化的。不过,如果我是您,我不会依赖于服务托管在IIS中这一事实。如果您想使用其他技术托管WCF服务,该怎么办?我认为您应该看看哪一个是更通用的缓存解决方案,它可以与.NET配合使用 无论如何,如果确实要使用IIS缓存,请使用System.Web.HttpRuntime.cache而不是Ht

我在IIS中托管了一个WCF服务,希望返回驻留在IIS缓存(HttpContext.Current.cache)中的数据
此服务应返回的最合适的类型是什么

当然,无论您存储在缓存中的是哪种类型,它都应该是可序列化的。不过,如果我是您,我不会依赖于服务托管在IIS中这一事实。如果您想使用其他技术托管WCF服务,该怎么办?我认为您应该看看哪一个是更通用的缓存解决方案,它可以与.NET配合使用

无论如何,如果确实要使用IIS缓存,请使用System.Web.HttpRuntime.cache而不是HttpContext.Current.cache,因为HttpContext并不总是可用


另外,正如cruizer所说,只要对象是可序列化的,那么对象的实际类型就完全不相关(也就是说,类是用[serializable()]属性修饰的)。IIS缓存本身不需要可序列化对象,但WCF需要。

您可以序列化对象以传输它们,但不需要缓存可序列化对象

您的服务调用您的业务逻辑以处理请求,但通过连接的不应该是您的业务对象,而是您的服务的数据契约


包装缓存API并将其与HttpRuntime缓存分离。正如DrJokepu所说,如果您愿意,可以通过HttpRuntime.cache访问asp.net缓存。

我同意。避免将您的服务紧密耦合到仅与IIS一起工作。我也同意这一点。请不要耦合WCF服务。这让Juval Lowy哭了起来。System.Web.HttpRuntime.Cache提示+1。我在没有意识到这是原因的情况下遇到了HttpContext.Current.Cache问题,在切换到HttpRuntime时已修复,谢谢如果缓存在内存中,则不需要序列化