.net WCF服务连接问题-可能是安全问题?
我正在尝试调试WCF服务。此客户端以前可以连接,但现在无法连接。 该服务已部署到服务器。我可以用浏览器点击服务器的服务页面,看到生成客户端的说明。 我使用svcuti重新生成了客户端代理和配置文件 客户端启动,但对服务的第一次调用在1分钟超时后返回错误。同时,我可以连接到服务器上运行的服务,并逐步完成那里的代码。我可以看出我的客户从未注册过。此调用的服务器代码中的断点未命中。由于某些原因,我无法单步执行服务器代码(但我可以将调试器附加到服务器上的服务): 远程调试器已安装并正在运行,或者正在运行。 我在长时间超时后收到此错误:.net WCF服务连接问题-可能是安全问题?,.net,wcf,security,.net,Wcf,Security,我正在尝试调试WCF服务。此客户端以前可以连接,但现在无法连接。 该服务已部署到服务器。我可以用浏览器点击服务器的服务页面,看到生成客户端的说明。 我使用svcuti重新生成了客户端代理和配置文件 客户端启动,但对服务的第一次调用在1分钟超时后返回错误。同时,我可以连接到服务器上运行的服务,并逐步完成那里的代码。我可以看出我的客户从未注册过。此调用的服务器代码中的断点未命中。由于某些原因,我无法单步执行服务器代码(但我可以将调试器附加到服务器上的服务): 远程调试器已安装并正在运行,或者正在运行
Client is unable to finish the security negotiation within the
configured timeout (00:00:00). The current negotiation leg is 1 (00:00:00).
当我设置security mode=none并增加超时时,错误变为
The open operation did not complete within the allotted timeout of 00:02:00.
The time allotted to this operation may have been a portion of a
longer timeout.
我没有任何防火墙在运行,我在Ethereal服务器上看到了请求。我正在查看TCP流,无法说明协商失败的原因。事件日志中没有任何相关内容。我快没气了,请给我一个提示
client app.config包含svcutil生成的部分:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_SportRadarDCS"
closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288"
maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true">
<readerQuotas
maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true"
inactivityTimeout="00:10:00" />
<security mode="Message">
<message clientCredentialType="Windows"
negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint
address="...."
binding="wsDualHttpBinding"
bindingConfiguration="WSDualHttpBinding_SportRadarDCS"
contract="SportRadarDCS"
name="WSDualHttpBinding_SportRadarDCS">
<identity>
<userPrincipalName value=".. my domain user ..." />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
看看WCF跟踪。如果您在服务主机上运行此操作,它将为您提供正在进行的单个WCF调用,并且应该足以让您了解配置的哪一部分被破坏 我发现这是解决连接问题的唯一方法
谢谢,非常有帮助。我发现的错误是:没有通道可以接受操作为“”的消息。我将从这里获取if。结果证明这是一个DNS问题。由于某种原因,我的工作站不在DNS中,在服务器上查找回调端点失败。一旦我解决了这个问题,它就成功了。为证明这一点干杯,通过WCF跟踪解决连接问题。很高兴你解决了你的问题。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_SportRadarDCS"
closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288"
maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true">
<readerQuotas
maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true"
inactivityTimeout="00:10:00" />
<security mode="Message">
<message clientCredentialType="Windows"
negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint
address="...."
binding="wsDualHttpBinding"
bindingConfiguration="WSDualHttpBinding_SportRadarDCS"
contract="SportRadarDCS"
name="WSDualHttpBinding_SportRadarDCS">
<identity>
<userPrincipalName value=".. my domain user ..." />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>