我之前在尝试从远程计算机访问 WCF 服务时问了一个问题来解决 SecurityNegotiationException。由于 ValtasarIII 的回答,该异常已得到解决。
现在我有一个不同的问题。我在服务器上托管了我的服务,并希望使用客户端应用程序连接到它。但是,当我尝试从客户端应用程序订阅服务时,什么也没有发生,最后我得到了异常:
The open operation did not complete within the allotted timeout of 00:00:59.9939996. The time allotted to this operation may have been a portion of a longer timeout.
(如有必要,我可以共享堆栈跟踪)
虽然当我尝试测试服务是否正在运行时,我可以通过客户端机器上的浏览器成功访问它。
这是我的配置:
服务 - web.config
<configuration>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="wsHttpDual">
<security mode="None">
<message clientCredentialType="None" algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<protocolMapping>
<add scheme="http" binding="wsDualHttpBinding" bindingConfiguration="wsHttpDual"/>
</protocolMapping>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
客户端 - app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_ISampleContract" clientBaseAddress="http://95.138.188.232:8000/myClient/">
<!--<security mode="Message">
<message clientCredentialType="Windows" algorithmSuite="Default" />
</security>-->
<security mode="None">
<message clientCredentialType="None" algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint address="http://95.138.188.232/autofxtools/service.svc"
binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_ISampleContract"
contract="ISampleContract" name="WSDualHttpBinding_ISampleContract">
<identity>
<servicePrincipalName value="host/95.138.188.232" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
我一直在寻找解决方案,但对我没有任何帮助。服务配置似乎表明没有安全要求。但是,具有相同配置的客户端实际上与服务在同一台机器上工作,而不是在远程机器上工作。这是否意味着仍然存在 Windows 身份验证(根据 wsDualHttpBinding 的默认设置)?如果是这样,那么我哪里出错了?
希望能得到一些积极的反馈。
问候。