我正在尝试设置一个只接受来自自身的传入消息/连接的 WCF 服务。
我已经能够成功创建服务并运行它并使用此代码与其通信以创建 WCF 端点(不仅限于本地主机)
NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.None;
_host = new ServiceHost(this, new Uri("net.tcp://localhost:19852"));
_host.Description.Behaviors.Add(new ServiceMetadataBehavior());
_host.AddServiceEndpoint(typeof(ISyncClient), binding, "SyncService");
_host.AddServiceEndpoint(typeof(IMetadataExchange), System.ServiceModel.Description.MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
_host.Open();
一旦我添加此行以限制来自本地主机的连接
binding.HostNameComparisonMode = HostNameComparisonMode.Exact;
我得到了这个例外
System.ServiceModel.AddressAlreadyInUseException:IP 端点 0.0.0.0:19852 上已经有一个侦听器。如果有另一个应用程序已经在侦听此端点,或者您的服务主机中有多个服务端点具有相同的 IP 端点但绑定配置不兼容,则可能会发生这种情况。---> System.Net.Sockets.SocketException: 每个套接字地址(协议/网络地址/端口)通常只允许使用一次
我什至不确定我在做什么是限制 WCF 访问的正确方法,但显然它不起作用。对我来说,这看起来像是与 MEX 端点的某种冲突。据我所知,我需要 mex 端点,所以我无法摆脱它。有人指出我的解决方案的方向吗?