HowtoBindaWCFHttpClienttoaSpecificOutboundIPAddressBeforeMakingRequest我希望我的请求通过特定的IP地址送出。有没有办法在WCF中执行此操作。为什么我需要这个的解释有点啰嗦,所以我不想深入。这是示例代码stringipAddress="192.168.0.32";IService服务;ChannelFactoryfactory=newChannelFactory(newBasicHttpBinding(),newEndpointAddress("http://"+IPAddress+":6996/IService"));service=factory.CreateChannel();服务.测试();这是一个示例场景,可以准确解释我正在寻找的内容。假设我的机器上有两个IP(192.168.0.30和192.168.0.31)。他们都可以到达192.168.0.32。如果我现在运行此代码,它将从我的任何IP(.30或.31)获取IP(.32)。我如何强制它通过我的特定IP(如.30)。有什么办法可以使用WCF做到这一点吗?问题的答案是无法做到。这是MicrosoftMVP的回答所以你希望客户端机器主动选择网络适配器接口(安装在它上面)来发出WCF请求?我担心这超出了WCF的控制范围,因为WCF只关心以下地址:**当作为主机时,我们可以选择绑定到特定的主机名/地址以侦听客户端请求**当作为一个客户端,我们可以选择目标地址/主机名来发送请求。您是否尝试过在您的服务器上创建类似IP-Sec的东西,以便它只接受来自特定IP地址的请求?在这种情况下,您需要实现IEndpointBehavior和IDispatchMessageInspector并且:publicobjectAfterReceiveRequest(refMessagerequest,IClientChannelchannel,InstanceContextinstanceContext){RemoteEndpointMessagePropertyremoteAddress=(OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name]asRemoteEndpointMessageProperty);//在这里验证ipreturnnull;在我看来,你的问题应该通过在路由表中设置一个额外的死记硬背来解决。从以管理权限启动的命令提示符处尝试以下操作:routeadd192.168.0.32mask255.255.255.255192.168.175.30如果要另外保存路由,请添加-p开关。以上就是C#学习教程的全部内容:如何在发送请求前将WCFHttp客户端绑定到特定的出站IP地址。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
