2010-02-02 71 views
3

我正在尝试使用Channel Factory并将其缓存在我的asp.net mvc中。 我正在使用PerSession实例模式,因为我需要知道状态。 因此,我无法立即关闭代理。我不想 重新打开,每次关闭代理。 如果我将代理打开,它将在第12次超时。我可以 增加并发会话超时,但我想知道它是否是 正确的方法去。 我是新来的WCF所以赦免如果我的问题是愚蠢的。 - 预先感谢 Pratt缓存WCF代理?

+2

为什么你想缓存它? – 2010-02-02 16:29:14

+0

让我来解释一下这个场景。用户将登录并且所有数据来自托管在其他站点上的wcf服务。所以对于同一个用户,代理应该保持良好的访问服务的所有不同数据部分。我不想每次都创建/打开代理来访问数据服务。我将其缓存在global.asax的Session Start事件中,并将其恢复为我所有的数据恢复。有没有其他方法在性能方面更好? – Pratt 2010-02-03 14:12:28

回答

1

答案可能会激活窗体验证元素中的slidingExpiration属性,但默认情况下会打开。这样,在每次通话之后,定时器重置为超时值,以便会话在使用期间保持活动状态。

看到这个MSDN Link: Forms Authentication & slidingExpiration property

编辑 - 回应评论:

是的,当达到会话超时的时候,你需要能够再次accesss服务之前重新进行身份验证。您应该将超时值设置为您认为用户不再活动的默认长度(以分钟为单位)(默认30分钟),然后如果用户一直保持呼叫,则滑动到期将重置此值。我会尝试做一些简单的测试,将超时设置为1分钟,并用不同的方案向自己证明。

+1

这很好,但是如果我不关闭并且时间到了,我的代理会发生什么情况。 clr是否负责清理它? – Pratt 2010-02-02 20:59:24