类似于Visual Studio开发Web服务器(Cassini)限制它只在localhost上服务,我有一个只在localhost上需要的WCF服务实现.
除了Windows防火墙提示允许程序侦听面向外部的NIC之外,我不介意其他机器具有访问权限.由于这仅在内部需要,我宁愿限制WCF服务器端配置,以便它不会使防火墙检测器跳闸.
是binding.HostNameComparisonMode = HostNameComparisonMode.Exact正确的解决方案吗?我不明白这是多么的充分.
====
与Cassini一样,此服务实现是其他需要网络通信的替代方案.客户端可以配置为连接到真实服务器或在localhost上运行的虚假实现.
我认为你是以错误的方式接近它.您应该使用命名管道绑定,它应该支持您正在使用的任何消息交换模式(它支持请求 - 响应,以及WS支持的相同并发和会话状态模式).
来自MSDN的标题为"选择运输"的部分(强调我的):
何时使用命名管道传输
命名管道是Windows操作系统内核中的对象,例如进程可用于通信的共享内存部分.命名管道具有名称,可用于单台机器上的进程之间的单向或双工通信.
当在一台计算机上的不同WCF应用程序之间需要通信,并且您希望阻止来自另一台计算机的任何通信时,请使用命名管道传输.另一个限制是,从Windows远程桌面运行的进程可能被限制为同一个Windows远程桌面会话,除非它们具有提升的权限.
这满足您的确切要求,应该只是配置更改.
这取决于您如何托管它。如果您使用的是IIS7或WAS,则WCF使用IIS的匹配模式。否则,如果您使用HostNameComparisonMode.Exact,那么是的,主机名将始终是匹配的关键因素。如果主机名不匹配,调度通常会失败。
应该注意的是,exact 并不是 100% 完全准确...它仍然允许主机名存在一些变化。如果您同时拥有 NetBios 主机名和完整的 DNS 名称,则仍然会发生匹配,因为 WCF 将这两者视为同一个。
System.ServiceModel.BasicHttpBinding.HostNameComparisonmode
| 归档时间: |
|
| 查看次数: |
10065 次 |
| 最近记录: |