我们有一个托管在 IIS 7.5 上的 WCF 服务,该服务具有使用自定义成员资格提供程序的自定义用户名身份验证(我们使用一些自定义逻辑对来自数据库的用户进行身份验证)。该服务使用带有 TransportWithMessageCredentials 安全模式的 WsHttpBinding。
它适用于繁重的负载,但有时大约需要 6-9 分钟,它会使请求等待 6-9 分钟,然后再响应。我将调试日志添加到自定义身份验证模块和正在调用的服务操作,并注意到对于这些实例,在身份验证模块执行结束和服务方法开始执行之间存在 6-9 分钟的延迟.
请求在这 6-9 分钟后正确响应。看起来他们被困在身份验证和实际服务方法调用之间的某个地方,但我不知道是什么原因造成的。这成为一个问题,因为服务客户端在这些时间段内超时。
更新:我启用了服务跟踪并观察到对于延迟的请求,“通过通道接收消息”之间存在延迟。和“理解消息头”。事件。线程 ID 在这两个事件之间也会发生变化。这是否意味着没有空闲线程?但是7分钟没有空闲线程吗?