使WCF服务可以通过互联网访问

3
我制作了一个WCF服务,我希望它的客户端能够从任何地方访问它。我该怎么做呢?
细节如下:
  • 我希望它托管在Windows进程中,而不是网站中。
  • 我正在使用TCP绑定。
  • 我对Web托管等几乎一无所知。
  • 最好不要使用IIS...
我在网上找到了很多建议,但仍然不太理解所有的东西。请告诉我如何详细操作...
据我所知,必须为端点创建一个全局对象。我已经在我的路由器中配置了端口转发到8000端口,但是...接下来该怎么办呢?我应该输入什么地址作为端点地址?现在是localhost:8000。
6个回答

2
您需要一个公网IP地址或者域名,就像上面建议的那样。确认您是否已经拥有它,如果没有,请按照上述建议进行设置。
对于您的WCF主机和客户端,您需要如下所示的端点:
主机:net.tcp://localhost:端口号/服务名称 客户端:net.tcp://公网IP地址或域名:端口号/服务名称
您需要确保路由器将端口路由到主机PC。从问题描述听起来,您已经正确地完成了操作。因为主机是本地的,所以不必更改端点以使用公网IP地址或域名。客户端需要解析调用远程地址中的主机,因此需要可寻址的公共IP地址。

1
你不需要IIS,你可以自我托管,并且它将通过互联网访问。
基本上,当您自我托管WCF应用程序时,它是一个服务器(就像像Apache或IIS这样的Web服务器一样)。
这是一个很好的网站,讨论如何将您自己的服务器暴露给互联网。

http://www.diywebserver.com/

请记住,您可以跳过任何与设置Apache有关的部分,因为您已经拥有一个服务器(您的WCF应用程序)。


0

如果您的服务在IIS上运行没有任何问题,那么您需要执行以下步骤通过互联网访问此服务。

假设:

我的解决方案名称是SearchServiceLibrary

接口名称是ISearch

类名是Search,该类实现了ISearch接口

步骤1: 如果您的个人电脑位于NAT后面,则需要将端口转发给路由器,以告诉它应该将收到的Web服务请求发送到哪里。

步骤2: 在WSDL文件中指定服务器的域名/IP地址

更新或编辑app.config文件中的以下标签

 <serviceMetadata httpGetEnabled="True" httpGetUrl="http://DomainName_OR_IPAddress:PORT/SearchServiceLibrary.Search.svc/basic"/>

步骤3:app.config 文件中设置 Soap 位置

您需要在 app.config 文件中添加一个终结点(End Point),您可以通过描述方式或使用选项 EDIT WCF CONFIGURATIONS 来完成此操作。

<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 配置

输入图像描述 这对我非常有效。


0

0

你需要拥有公共IP和域名。我建议为您的服务租用虚拟服务器,并将其托管在Windows服务中。


0

你不应该使用 localhost:8000 进行主机托管,因为这只能在本地计算机上访问。端口转发将无法工作。

相反,请使用机器的网络名称或局域网 IP。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接