【发布时间】:2014-01-29 07:44:26
【问题描述】:
背景
我正在使用 WCF 实例上下文模式来了解它们在不同场景中的工作方式。我将默认服务设置为 PerCall。默认情况下,我的意思是当您创建 WCF 服务库时,它会创建一堆默认代码。这就是我正在使用的代码——非常非常简单的服务。我可以从一个简单的客户端很好地调用该服务。但是,如果我不理会客户端并且在大约 10 或 15 分钟内不按任何东西,然后我尝试进行另一个呼叫,我会收到一条消息,告诉我“如果服务中止通道,则安全上下文令牌将无效由于不活动。”
这是完整的消息:
这是由于我在客户端处理代理的方式。我从不关闭它。我的代理只是一个公共类级变量,只要它没有故障,我就可以重复使用它。
这是我的问题:
为什么 WCF 服务要创建会话?我认为由于实例上下文模式设置为 PerCall,因此它不需要会话。如果它确实需要一个会话,它只会在每次通话后关闭会话。即使它们来自同一个代理。
明确一点:我不是故意使用任何特定于会话的功能。我实际上只是创建了一个新的 WCF 服务库并将上下文模式设置为 PerCall,保留所有默认操作等。这是最普通的服务。
【问题讨论】:
-
你使用什么绑定?您是否为每个新呼叫重新初始化客户端?