缓存WCF代理?

3

我正在尝试在我的asp.net mvc中使用Channel Factory并将其缓存起来。 我使用了PerSession实例模式,因为我需要知道状态。 由于这个原因,我不能立即关闭代理。而且我不想每次都重新打开和关闭代理。 如果我保持代理开启,它会在第12次超时。我可以增加并发会话超时时间,但我想知道这是否是正确的方法。 我对WCF很新,所以请原谅我的愚蠢问题。 -提前感谢 普拉特


2
你为什么想要进行缓存? - Tad Donaghe
让我向您解释一下情况。用户将登录,所有数据都来自托管在不同站点上的wcf服务。因此,对于同一用户,代理应该适用于访问服务的所有不同数据部分。我不想每次访问数据服务时都创建/打开代理。我在global.asax的Session Start事件中对其进行缓存,并将其重用于所有数据检索。是否有其他更好的性能方法? - Pratt
1个回答

1

答案可能是在表单身份验证元素中激活slidingExpiration属性,尽管默认情况下已经打开。通过这种方式,在每次调用后,计时器将重置为超时值,因此会话在使用时保持活动状态。

请参见MSDN链接:Forms Authentication & slidingExpiration property

编辑-回复评论:

是的,当会话超时时,您需要重新进行身份验证才能再次访问服务。您应该将超时值设置为您认为用户不再活动的时间(以分钟为单位)的长度(默认为30分钟),然后滑动过期将重置此值,如果用户继续调用。我建议您尝试使用超时设置为1分钟的不同场景进行一些简单的测试,以证明其可行性。


1
这很好,但如果我不关闭代理并且超时了,会发生什么?clr会负责清理它吗? - Pratt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接