在具有多个网卡的计算机上,我需要将WCF Web服务绑定到特定的网络接口.似乎默认是在所有网络接口上绑定.
本机有两个网络适配器,IP为192.168.0.10和192.168.0.11.我有一个Apache运行绑定在192.168.0.10:80并需要在192.168.0.11:80上运行webservice. (由于外部环境,我无法选择其他端口.)
我尝试了以下方法:
string endpoint = "http://192.168.0.11:80/SOAP"; ServiceHost = new ServiceHost(typeof(TService),new Uri(endpoint)); ServiceHost.AddServiceEndpoint(typeof(TContract),Binding,""); // or: ServiceHost.AddServiceEndpoint(typeof(TContract),endpoint);
但它不起作用; netstat -ano -p tcp总是显示监听0.0.0.0:80的web服务,这是所有接口(如果我得到了正确的话).当我首先启动Apache时,它会正确绑定到另一个接口,从而阻止WCF服务绑定到“all”.
有任何想法吗?
解决方法
我的工作场所遇到了类似的问题,当我偶然发现你的帖子时,我正在研究它.我还没有机会尝试它,但计划当我们有机会时:Binding上有一个“hostNameComparisonMode”,当设置为“Exact”时,应该始终服从你的设置. (默认情况下,如果找不到匹配项,则允许它转到通配符.)
如果你有机会在我之前尝试这个,请告诉我结果.否则,我会更新我的回答,让你知道!