C# 客户端具有多LPLE IP地址时出现WCF服务问题

C# 客户端具有多LPLE IP地址时出现WCF服务问题,c#,wcf,wcfserviceclient,C#,Wcf,Wcfserviceclient,我需要一些帮助来解决我面临的桌面客户端与IIS上托管的WCF服务的通信问题。 我在测试用例中尝试做什么: 服务器承载WSDualHttpBinding服务 客户机通过提供包含客户机IP地址的回调uri来建立对此的连接(调用Register方法) 建立连接后,客户端应用程序将启动一个网页。用户在文本框中键入一些文本,然后单击发送。网页将文本发送到所有已注册的桌面客户端 问题: 在步骤2中,PC可能有多个IP地址(以太网适配器、环回适配器等)。如果在注册调用期间,在回调url中发送了此列表中的IP

我需要一些帮助来解决我面临的桌面客户端与IIS上托管的WCF服务的通信问题。

我在测试用例中尝试做什么:

  • 服务器承载WSDualHttpBinding服务
  • 客户机通过提供包含客户机IP地址的回调uri来建立对此的连接(调用Register方法)
  • 建立连接后,客户端应用程序将启动一个网页。用户在文本框中键入一些文本,然后单击发送。网页将文本发送到所有已注册的桌面客户端
  • 问题:

    在步骤2中,PC可能有多个IP地址(以太网适配器、环回适配器等)。如果在注册调用期间,在回调url中发送了此列表中的IP,但无法从服务器回调(例如,环回适配器IP),则会引发超时异常。经过几次这样的尝试后,服务器无法再接受来自客户端的呼叫(无论是有效IP还是其他)。有时会引发“服务器太忙”异常

    (我无法在回调uri中使用计算机的完全限定名,因为DNS/WINS配置问题导致服务器无法将计算机名解析为正确的IP地址)

    如何复制:
    A.在IIS上发布服务器。从具有多个IP地址的不同计算机执行客户端。客户端抛出超时异常,程序在尝试3次后退出 BApp.Config中的参数允许键入正确的IP地址(要使用的IP)。现在,如果启动该程序,一切正常。
    C如果我删除了上面指定的IP地址,从而使用了不正确的IP,那么步骤a将再次发生。在此模式下运行程序2-3次。
    D按照步骤b进行更改并运行程序。有时我会遇到超时异常。其他时候,网站会出现。但是,当输入并发送文本时,它不会到达客户端。(即使web服务未接收到任何调用,register方法仍然有效。发送功能失败,因为web服务上没有注册的客户端

    我不确定为什么会发生这种情况,以及如何解决它。这是我的Visual studio解决方案-

    非常感谢您的任何意见和建议。 环境:服务器-Windows XP(IIS 5),Windows Server 2008 SP2 x64(IIS 7),客户端:Windows XP

    谢谢
    GC

    好吧,我想主要的问题是:当服务器试图回叫客户端但失败时,两者之间的通道将变得“有故障”,并变得无用

    在此类事件发生后,您必须处理客户端代理并重新创建它,或者在服务器上优雅地处理超时异常(捕获它,将其转换为SOAP错误,记录它-无论什么-只是不要让未过滤的.NET TimeoutException传回客户端,这将导致通道故障)


    当发生这样的TimeoutException时,您在服务器端会做什么?您是否确保不会将该异常一直冒泡到频道???

    谢谢marc_s。我将应用您的建议并报告。在服务器端,当发送消息时发生任何异常时,会引发错误事件。该服务通过删除此客户端从已注册的客户端列表中删除,并将客户端设置为空。你是对的,Marc。我现在已按预期处理客户端代理及其工作。我错误地认为程序终止时它将关闭。谢谢!!