WCF:如果建立了一个通道但没有调用方法会发生什么?

时间:2010-04-09 17:23:30

标签: wcf security

在我的特定情况下:建立了WCF连接,但永远不会调用唯一带有“IsInitiating = true”(登录方法)的方法。会发生什么?

如果连接在一段时间后由于不活动而关闭:哪个设置配置此超时?客户端是否还有一种方法可以使连接保持活动状态?

这个问题的原因:我正在考虑上述案例作为可能的安全漏洞。想象一下,许多客户端在没有登录的情况下连接到服务器,从而阻止其他客户端因带宽问题或端口短缺或缺乏处理能力而无法连接......

我是在做梦,还是这是一个实际的问题?

1 个答案:

答案 0 :(得分:3)

WCF客户端代理将在超出范围时关闭连接(如果打开),例如当它正在使用的方法终止时。

如果您正在使用会话(但只有在您确实已经建立了会话时才启动 - 在调用方法之后),会话中的inactivityTimeout设置在客户端和服务器端 - 较小的值“获胜”,可以这么说。

如果您的服务器上的“concurrentSessions”设置非常低,这可能是一个问题 - 但同样,这只会在实际会话到位时启动,例如:至少调用了一个方法 - 在这种情况下,会话上的非活动超时将根据需要清除那些未使用的会话。