我可以使用 netTcpBinding 在同一台机器(本地主机)中而不是在本地主机之外访问(请注意,我问的是可访问的意思是可浏览的)来托管 WCF 服务......甚至不是内部网。
4 回答
我应该这样认为,只要它运行的端口不可从外部访问(例如被防火墙阻止)。
这也可以在托管级别(在 IIS 中)完成:
- 打开 IIS 管理器
- 选择 WCF 服务应用程序文件夹
- 打开“IP地址和域限制”
- 如果不存在,则必须将“ip 和域限制”角色添加到服务器
- 在“IP 地址和域限制”中输入 127.0.0.1 的允许条目
- 然后在“编辑功能设置”下将“未指定访问”设置为“拒绝”
无论服务如何设置,IIS 都不允许访问 127.0.0.1 之外
编辑:此功能在 IIS 5.1 (Windows XP) 上不可用。您将需要防火墙,或查看 IIS Express。
您可以使用 IIS(net.tcp 仅 7.0 或更高版本)或作为 Windows 服务托管 WCF 服务。
对于 IIS,您应该创建站点或 Web 应用程序并为 net.tcp 协议添加与端口的绑定。
在 localhost 和远程计算机上托管没有区别。
一般来说,本地连接最好使用 NetNamedPipeBinding
正如 Henk Holterman 所建议的那样
当我们在 loaalhost 中托管服务并且服务只需要进程内通信(例如与同一台机器中的另一个 WCF 进行通信)或者说存在于同一台机器中的 .Net 客户端时,NetNamedPipeBinding 是最好的方法......
同样,netNamedPipeBinding 使通信更快,因为
1) 序列化以二进制格式进行 2) 与 netTcpBinding 不同,我们通过端口进行通信,netNamedPipebinding 使用命名管道在进程之间进行通信。
谢谢。苏拉杰