我正在使用IIS托管我的WCF应用程序。为了服务某些方法,我需要一个对大量初始化的帮助对象的引用。一个好的方案是初始化一次并放入缓存中,然后所有请求只使用缓存中的对象。我如何做缓存?在不同服务主机中启动的wcf服务的常见缓存
最简单的方法是使用mywebmethod的静态字段。 IIS创建多个ServiceHosts来为请求提供服务。并且在每个servicehost中,静态字段将会不同。
我aso尝试使用System.Web.HttpRuntime.Cache
。同样,我有一些独立的缓存。为了澄清,我需要不缓存请求的结果,但需要处理请求的一些中间数据。
那么有什么解决方案?
我发现IIS的真正问题不在不同的服务主机中。他们可以通过HttpContext.Cache属性成功共享System.Web.Caching.Cache对象(至少适用于httpBindings)。 .Net为每个AppDomain创建一个Cache对象。如果IIS在AppPool中使用多个工作进程(在IIS 7中默认为10),它显然会自然创建100个AppDomain和10个单独的缓存。 – flashnik 2010-01-26 10:42:04