我已经制作了WCF服务。我希望它的客户端能够从任何地方访问它。我怎样才能做到这一点? 详细说明:
我在网上找到了很多推荐,但仍然不了解所有内容。请告诉我如何详细说明......
据我了解,有必要为端点创建一个全局。我已经在我的路由器中将端口转发配置到8000端口,但是......还有什么进一步的?我应该输入什么地址作为端点地址?它现在是localhost:8000。
答案 0 :(得分:2)
您需要一个公共IP地址或域名,如上所述。如果没有按照上面的建议进行设置,请确定您是否已经拥有它。
对于您的WCF主机和客户端,您将需要如下所示的端点:
您需要确保路由器将端口路由到主机PC。从这个问题听起来你已经正确地完成了它。因为主机是本地的,所以您不必将端点更改为使用公共IP或域名。客户端需要解析对驻留在远程地址上的主机的调用,因此需要可寻址的公共IP。
答案 1 :(得分:1)
您不需要IIS,您可以自托管,也可以通过互联网访问。
基本上,当您自托管WCF应用程序时,它是一个服务器(就像Apache或IIS之类的Web服务器)。
这是一个很好的网站,讨论如何将自己的服务器暴露在互联网上。
请记住,您可以跳过与设置Apache有关的任何部分,因为您已经有了服务器(您的WCF应用程序)。
答案 2 :(得分:0)
正如我在related SO link中回答的那样,我的建议基于this codeproject.com example。它运作良好。
答案 3 :(得分:0)
您需要拥有公共IP和域名。我建议为您的服务租用虚拟服务器并将其托管在Windows服务中。
答案 4 :(得分:0)
您不应该使用 localhost :8000进行托管,因为这只能在本地计算机上访问。端口转发不起作用。
而是使用机器网络名称或LAN IP。
答案 5 :(得分:0)
如果您的服务在IIS上运行没有任何问题,那么您需要执行以下步骤才能通过互联网
访问此服务<强>假设:强>
我的解决方案名称为 SearchServiceLibrary
接口名称为 ISearch
类名是搜索,此类实现ISearch接口
<强>步骤1:强> 如果您的PC位于NAT后面,则需要转发 PORT ,告诉您的路由器应该在哪里发送收到的Web服务请求。
步骤2:在WSDL文件中指定服务器的域名/ IP地址
在app.config文件中更新或编辑以下标记
<serviceMetadata httpGetEnabled="True" httpGetUrl="http://DomainName_OR_IPAddress:PORT/SearchServiceLibrary.Search.svc/basic"/>
第3步:在 app.config 文件中设置肥皂位置
您需要在app.config文件中添加一个终点,您可以通过描述性地或使用选项编辑WCF配置
来执行此操作<service name="SearchServiceLibrary.Search">
<endpoint address="http://DomainName_OR_IPAddress:PORT/SearchServiceLibrary.Search.svc/basic" binding="basicHttpBinding"
contract="SearchServiceLibrary.ISearch">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
或使用选项编辑WCF配置
这对我来说非常完美。