我如何在互联网上托管wcf服务?

时间:2009-11-11 03:14:21

标签: wcf

这可能是一个基本的网络问题,但我是新手,并且不知道答案。

我写了一个wcf服务和客户端。当我将机器的网络IP地址作为端点地址并从同一台机器运行客户端和服务器时,我可以使用其中一个http绑定并使服务正常工作。现在,我希望能够通过互联网从不同的计算机连接到此服务。显然,当我在这种情况下使用我的网络IP地址时它不起作用,但是简单地放入我的路由器的宽带IP地址似乎也没有做到这一点。我只是缺少一个我需要打开的防火墙端口,还是我想做一些不可能的事情?

5 个答案:

答案 0 :(得分:2)

如果您希望来自互联网的用户能够连接到您的服务,您必须考虑以下几点:

  • 绑定:最低公分母是basicHttpBinding,它是SOAP 1.1,基本上没有其他可用功能 - 就像ASMX webservices一样。几乎任何人都可以连接到那个。对于更高级的客户端,您可能还希望在服务上公开wsHttpBinding端点

  • 安全性:您希望如何(如果有的话)保护对您的Web服务的访问权限?您是否拥有呼叫者必须提供的用户名/密码凭据?查看WCF Security Guidance了解各种安全方案中的大量信息位

  • 验证您的服务:通常,您应该努力使您的服务向世界其他地方进行身份验证 - 这需要服务器证书并在线路上启用安全通信(消息签名+加密)

  • 确保您的服务端点可以通过互联网,所有防火墙和代理以及所有内容访问:-)

希望有所帮助!

答案 1 :(得分:1)

您需要在路由器上设置端口转发。也许ServerFaultSuperUser上的某位人员可以为您提供帮助。甚至谷歌搜索现在你知道它叫什么。根据路由器的不同,说明会有所不同。您需要转发的端口将是您在WCF配置文件中选择的端口。

答案 2 :(得分:0)

我通过IIS托管WCF服务,但我花了很多时间来研究如何。目前,我将文件放在网络服务器上,并在根文件夹上启用网络共享。然后,您可以将它们分配给IIS中的相应应用程序池,并使用wsdl的URL向任何客户端项目添加服务引用。

我不确定这是否是最好的方法,但这是我迄今为止唯一的解决方法。

答案 3 :(得分:0)

这是一个简单的解决方案。

  1. 我假设您已经创建了一个有效的WCF应用程序并通过IIS托管。

  2. 接下来要做的是从IIS浏览应用程序。它会在地址栏中为您提供以下内容的网址: http://localhost/myservice/service.svc

  3. 接下来访问www.whatismyip.com。这将为您提供系统的WAN IP(例如,45.34.56.200)。

  4. 将步骤2中获得的网址替换为:http://45.34.56.200/myservice/service.svc

  5. 现在,您可以在此世界的任何地方使用此网址来使用您的服务。

答案 4 :(得分:0)

我发现了一篇很好的文章,它对我来说很好,主要步骤如下:

1 - 首先你应该创建WCF服务。

在IIS上添加2个应用程序并为您的虚拟目录提供别名,并从本地驱动器设置路径。

3 - 确保您的默认应用程序池设置为.NET CLR V4.0。

4测试您的WCF服务在localhost上成功运行。

5 - 要通过LAN(局域网)访问相同内容,您必须为您的专用网络禁用防火墙。

6-尝试使用ngrok.com,您将获得临时URL以通过互联网在任何地方访问您的LocalHost。

然后一切都会好的。

更多信息请查看以下链接:

https://www.codeproject.com/Tips/813650/Host-WCF-on-LocalHost-and-access-via-Internet