我们有一个安全的&经过身份验证的WCF服务,无法使用服务引用。因此,我们手动为合同和开放客户端渠道提供接口。
我们发现,只要我们打开一次,一切正常。我们可以多次调用几种方法。但是,如果通道已关闭或仅设置为新实例,则Login()(在使用服务之前的第一步中恰好需要)会超时。
为了使问题更加神秘,这只发生在我们的生产服务器上。如果我在本地运行相同的项目,我可以根据需要多次登录。在Web浏览器中使用这些方法(即使在代码隐藏的ASPX页面上),即使使用生产服务器也没有这个问题。只有当它是一个试图打开生产服务器的客户端通道的.NET客户端时,我们才会遇到这个问题。
我们甚至不确定从哪里开始寻找。任何建议将不胜感激。
更新:
根据@Rene的建议,我们打开了双方的登录。从客户端的日志中,有一个错误记录,这与我们通过异常已经获得的超时错误基本相同。没什么意义。在服务器的日志中,即使在第二次登录()之后也有成功调用的服务方法的记录,并且从服务器的POV开始,服务请求被提供。
此外,我发现我甚至无法使用相同的测试项目在我的机器上重现此问题以重现此问题。这在我的开发人员的机器上重现。我确认我们处于相同版本的.NET框架和Visual Studio。它肯定是客户端问题。可能是什么?
答案 0 :(得分:0)
如果其他人正在寻找答案,我们终于找到了答案 - 问题是由于需要在客户端System.Net.ServicePointManager.DefaultConnectionLimit
设置更高的价值。默认值为2,但实际上这只允许创建一个代理并可以使用。将其设置为3将允许创建2个代理。使用。