本地网络上的WCF初始化挂起20秒

Mar*_*rek 6 c# wcf networking basichttpbinding

我有使用basicHttpBinding的WCF服务.

当客户端和服务器在同一网络上时,它们的初始呼叫会持续大约30秒而不是平稳.

当我使用DNS通过互联网从客户端进行同样的呼叫时,它可以很好地工作,没有挂起.

客户端和服务器都是控制台应用程序 服务器正在运行Windows 7,有问题的客户端正在运行Windows Server 2008.同一网络上的两台计算机都使用其本地安全策略,因此没有域控制器.

关闭所有防火墙和防病毒软件并没有解决我的问题.

这是来自设置的日志,彼此相邻

09:33:05,252 [1] DEBUG ChannelFactoryManager: Created ClientChannel http://192.168.1.11:18762/DiagnosticService
09:33:05,263 [1] INFO  Program: WcfAppender.InitializeWcfAppender: 08:33:05
09:33:05,274 [1] INFO  Program: File.Copy(C:temptest.txt, O:test.txt, true): 08:33:05
09:33:05,298 [1] INFO  Program: GETTING DomainFactory.LoggingDiagnosticService.GetMonitoringLevel: 08:33:05
09:33:32,661 [1] INFO  Program: GOT DomainFactory.LoggingDiagnosticService.GetMonitoringLevel: 08:33:32
09:33:32,668 [1] INFO  Program: GETTING DomainFactory.LoggingDiagnosticService.GetMonitoringLevel: 08:33:32
09:33:32,680 [1] INFO  Program: GOT DomainFactory.LoggingDiagnosticService.GetMonitoringLevel: 08:33:32
09:33:32,693 [1] INFO  Program: File.Copy(C:temptest.txt, O:test.txt, true): 08:33:32
Run Code Online (Sandbox Code Playgroud)

当我从不同网络通过互联网点击同一台服务器时,这是日志:没有延迟:

09:36:56,500 [1] DEBUG ChannelFactoryManager: Created ClientChannel http://mydomain.com:18762/DiagnosticService
09:36:56,501 [1] INFO  Program: WcfAppender.InitializeWcfAppender: 08:36:56
09:36:56,501 [1] INFO  Program: File.Copy(C:temptest.txt, O:test.txt, true): 08:36:56
09:36:56,501 [1] INFO  Program: GETTING DomainFactory.LoggingDiagnosticService.GetMonitoringLevel: 08:36:56
09:36:56,680 [1] INFO  Program: GOT DomainFactory.LoggingDiagnosticService.GetMonitoringLevel: 08:36:56
09:36:56,680 [1] INFO  Program: GETTING DomainFactory.LoggingDiagnosticService.GetMonitoringLevel: 08:36:56
09:36:56,705 [1] INFO  Program: GOT DomainFactory.LoggingDiagnosticService.GetMonitoringLevel: 08:36:56
Run Code Online (Sandbox Code Playgroud)

我也尝试在框之间复制test.txt文件,看看我是否遇到了相同的连接问题

小智 5

定义默认代理时可能会发生此类错误:通过将此属性添加到app.config来禁用默认代理的使用

<system.net>
    <defaultProxy enabled="false" useDefaultCredentials="false">
        <proxy />
        <bypasslist />
        <module />
    </defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)

或者使用useDefaultWebProxy ="false":-)正如您在评论中所说的那样