我一直试图将我的Silverlight应用程序与WCF net.tcp绑定工作一整天并且无法成功,即使在我看来我做的一切都正确,包括在谷歌上搜索之后..
我有一个带有basicHttpBinding端点的WCF服务,它工作得很好,而且我的WCF服务和我的Silverlight应用程序在同一个网络上,告诉自己“为什么不尝试除HTTP以外的其他东西?”
所以我开始谷歌搜索要做的事情,这是我所做的清单:
完成所有这些后,我可以将我的WCF服务与WcfTestClient一起使用,它会看到两个端点(HTPP和net.tcp),并且它们都像魅力一样。
在我的Silverlight应用程序中,我可以更新我的服务引用(我添加了我的服务的HTTP地址,而不是TCP服务),它也看到了两个端点,因为它在ServiceReferences.ClientConfig中添加了TCP端点。正如我在Google上看到的那样,Silverlight不支持netTcpBinding,因此它将绑定描述为与a和元素的自定义绑定。
我在后面看到的不同教程中看到,对于HTTP绑定,Silverlight要求使用套接字策略文件来检查客户端是否可以访问WCF服务。在SL4 Beta中,TCP在端口943上请求了此文件。从SL4 RC和RTM开始,它在端口80上由HTTP请求,就像HTTP绑定一样。
问题是,当我使用代理集启动我的应用程序以使用net.tcp绑定时,我检查了Fiddler,clientaccesspolicy.xml随时被 NOT 请求,我得到了当套接字策略文件不存在时出现经典错误:TCP错误代码10013:尝试以其访问权限禁止的方式访问套接字。
在谷歌上搜索后,我发现SL使用服务器的IP地址查找此文件,而不是其名称,但在我的客户端计算机上的浏览器中尝试http://IP_OF_MY_SERVER/clientaccesspolicy.xml按预期方式提供文件... < / p>
所以我在这里有点迷失,我真的很想让它看到除了WCF以外的其他东西......
有人有任何想法猜测会发生什么? 由于WcfTestCLient与net.tcp绑定服务按预期工作,我猜这有点与SL有关......
感谢阅读: - )