安全 WCF 服务在第二次调用客户端通道时超时



我们有一个安全和经过身份验证的WCF服务,它不能使用服务引用。因此,我们为合约提供接口并手动打开客户端通道。

我们发现,只要我们打开一次,一切正常。我们可以多次调用多个方法。但是,如果通道已关闭或仅设置为新实例,则 Login()(恰好是使用服务之前的第一步所必需的)会超时。

为了使事情更加神秘,这只发生在我们的生产服务器上。如果我在本地运行同一个项目,我可以根据需要多次登录。使用 Web 浏览器中的方法(即使在代码隐藏 ASPX 页上)即使对于生产服务器也不会有此问题。只有当 .NET 客户端尝试针对生产服务器打开客户端通道时,我们才会遇到此问题。

我们甚至不确定从哪里开始寻找。任何建议将不胜感激。

更新:

根据@Rene的建议,我们在两边都启用了日志记录。从客户端的日志中,有一个错误记录,它基本上与我们通过异常获得的超时错误相同。没什么意义。在服务器的日志中,即使在第二次登录()之后,也有成功调用服务方法的记录,并且从服务器的POV中,请求得到了服务。

此外,我发现我什至无法使用相同的测试项目在我的机器上重现此问题。这在我的开发人员的计算机上重现。我验证了我们使用的是相同版本的.NET Framework和Visual Studio。这肯定是客户端问题。会是什么?

如果其他人正在寻找答案,我们终于找到了 - 问题是由于需要在客户端设置System.Net.ServicePointManager.DefaultConnectionLimit更高的值。默认值为 2,但实际上这只允许创建一个代理并可供使用。将其设置为 3 将允许创建和使用 2 个代理。

最新更新