【问题标题】:Secured WCF service timing out on 2nd invocation of client channel安全的 WCF 服务在第二次调用客户端通道时超时
【发布时间】:2015-01-26 13:59:00
【问题描述】:

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

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

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

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

更新:

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

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

【问题讨论】:

  • 在双方(客户端和服务器)上启用 wcf 日志记录,然后对其进行分析。
  • 当您说超时时,您可以发布客户得到的实际错误吗?
  • @Rene - 正在努力。
  • @Tom - 我们只是挂起,直到 Web 服务超时,我们得到一个超时异常,就是这样。

标签: asp.net wcf wcf-security


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-24
    • 2012-11-24
    • 2011-03-22
    • 2012-03-25
    • 2013-04-23
    • 2018-10-19
    • 1970-01-01
    • 2019-10-20
    相关资源
    最近更新 更多