【发布时间】:2010-02-08 08:53:59
【问题描述】:
我有一个 WCF 客户端和服务,其中服务(托管在控制台应用程序中)使用非常标准的 WSDualHttpBinding 和 WSDualHttpSecurityMode.None 回调客户端。托管在本地计算机上时一切都很好,但是一旦我将服务移动到本地计算机以外的计算机(但在同一网络上),客户端就无法再连接到该服务。
MEX 工作正常,我可以掌握 WSDL 等等。使用 Fiddler 捕获出站流量后,我得到了以下结果:
POST /chinchillin HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Host: 192.168.0.98:8080
Content-Length: 916
Expect: 100-continue
Connection: Keep-Alive
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</a:Action>
<a:MessageID>urn:uuid:aa317faa-f32e-4cbc-a6a3-5fdbc9f80fe6</a:MessageID>
<a:ReplyTo>
<a:Address>http://agogolev.ad.alponline.ru/Temporary_Listen_Addresses/f423a1ae-573a-4c14-9a64-c4ed26fc6366/3069625c-d37a-4de2-8f92-e078b51f01d5</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">http://192.168.0.98:8080/chinchillin</a:To>
</s:Header>
<s:Body>
<CreateSequence xmlns="http://schemas.xmlsoap.org/ws/2005/02/rm">
<AcksTo>
<a:Address>http://agogolev.ad.alponline.ru/Temporary_Listen_Addresses/f423a1ae-573a-4c14-9a64-c4ed26fc6366/3069625c-d37a-4de2-8f92-e078b51f01d5</a:Address>
</AcksTo>
<Offer>
<Identifier>urn:uuid:7d198ab8-4fed-4f62-a76b-6e2ae2a13dda</Identifier>
</Offer>
</CreateSequence>
</s:Body>
</s:Envelope>
HTTP/1.1 202 Accepted
Content-Length: 0
Server: Microsoft-HTTPAPI/2.0
Date: Mon, 08 Feb 2010 08:41:48 GMT
我尝试关闭两台机器上的防火墙,使用netsh -c http add urlacl url=http://+:8080/chinchillin user=domain\user 注册 URL ACL。这些都没有帮助。
如何让回调在这种情况下工作?
【问题讨论】:
-
客户端和服务之间是否有可能有 NAT?您是否尝试过使用 NetTcpBinding 进行双工消息传递?
-
@Dmitry 不,没有任何 NAT
-
您是否启用了日志记录并查看了服务日志?
-
我唯一能想到的就是创建一个简单的服务,只公开一两个方法,看看你是否可以让它在网络上工作。如果没有,那么可能存在网络问题,如果可以,那么您也许可以通过自己的方式找出发生了什么。
标签: wcf networking callback