【问题标题】:Caching WCF Proxy?缓存 WCF 代理?
【发布时间】:2010-02-02 16:20:55
【问题描述】:

我正在尝试使用 Channel Factory 并将其缓存在我的 asp.net mvc 中。 我正在使用 PerSession Instance 模式,因为我需要知道状态。 因此,我无法立即关闭代理。我不想 重新打开,每次关闭代理。 如果我让代理处于打开状态,它会在第 12 次超时。我能 增加并发会话超时,但我想知道它是否是 正确的方法。 我是 WCF 的新手,如果我的问题很愚蠢,请原谅。 -提前致谢 普拉特

【问题讨论】:

  • 为什么要缓存它?
  • 让我解释一下这个场景。用户将登录,所有数据都来自托管在不同站点上的 wcf 服务。因此,对于同一用户,代理应该适合访问服务的所有不同数据部分。我不想每次都创建/打开代理来访问数据服务。我将它缓存在 global.asax 的 Session Start 事件中,并将其重新用于我的所有数据检索。在性能方面还有其他更好的方法吗?

标签: asp.net asp.net-mvc wcf proxy channelfactory


【解决方案1】:

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

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

编辑 - 对评论的回应:

是的,当会话超时时,您需要重新进行身份验证才能再次访问服务。您应该将超时值设置为您认为用户不再处于活动状态的不活动时长(以分钟为单位)(默认为 30 分钟),然后如果用户继续调用,则滑动到期将重置此值。我会尝试做一些简单的测试,将超时设置为 1 分钟,并使用不同的场景向自己证明这一点。

【讨论】:

  • 这很好,但是如果我不关闭并且超时,我的代理会发生什么。 clr 会负责清理它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2013-09-26
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多