【问题标题】:Release connection of WCF service at the server side在服务器端释放 WCF 服务的连接
【发布时间】:2012-07-19 08:38:21
【问题描述】:

我遇到了 WCF 中连接受限的问题。我的 WCF 服务托管在 IIS 中,我的 Windows 窗体应用程序客户端连接到 WCF。在 Windows_Closed 事件中,我调用了 client.Close() 方法来通知 WCF 服务“我退出”但是在我的客户端崩溃的情况下,我的客户端和 WCF 服务之间的连接仍然存在一段时间,我模拟了 10 崩溃时间然后我的应用程序不再工作了。

问题是,如何释放 WCF 和崩溃的客户端之间的连接?因为服务器的 maxConnections 是有限的,例如等于 10。

谢谢!

【问题讨论】:

    标签: wcf


    【解决方案1】:

    Brijesh 指出,如果您使用的是 ReliableSession,您可以使用 InactivityTimeout。否则,您应该利用基本的 WCF 超时。

    请参阅Timeouts WCF Services,了解如何实现每个超时。

    超时对于开发人员来说往往是个烦恼,但这正是它们存在的目的。

    【讨论】:

      【解决方案2】:

      您可以使用 Inactivity Timeout 。如果在指定的时间范围内没有收到消息,这里服务器将自动关闭连接。

      【讨论】:

        【解决方案3】:

        您可以在客户端中使用代码块:

        using(ClientClass client = new ClientClass){
        //Call service here
        }
        

        这并不可靠,因此您可能希望尝试使用 try-catch-finally。确保在每个 catch 块中调用 client.Abort。

        【讨论】:

        • finally 块不会因某些类型的崩溃而执行,例如电源故障、内存不足、堆栈溢出、ExecutingEngineException
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        • 2012-12-29
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        相关资源
        最近更新 更多