在具有多个网卡的计算机上,我需要将WCF Web服务绑定到特定的网络接口。似乎默认是在所有网络接口上绑定。
本机有两个网络适配器,其IP为192.168.0.10
和192.168.0.11
。我有一个Apache运行,绑定在192.168.0.
10
:80
,需要在192.168.0.
11
上运行网络服务 :80
。 (由于外部环境,我无法选择其他端口。)
我尝试了以下内容:
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), Binding, endpoint);
但它不起作用; netstat -ano -p tcp
始终显示监听0.0.0.0:80
的web服务,这是所有接口(如果我得到了正确的话)。当我首先启动Apache时,它会正确地绑定到另一个接口,这反过来会阻止WCF服务绑定到“all”。
有什么想法吗?
答案 0 :(得分:2)
我们在我的工作场所遇到了类似的问题,当我偶然发现你的帖子时,我正在研究它。我还没有机会尝试它,但是计划当我们有机会时:Binding上有一个“hostNameComparisonMode”,当设置为“Exact”时,应该始终服从你的设置。 (如果找不到匹配项,则默认允许它转到通配符。)
如果你有机会在我之前尝试这个,请告诉我结果。否则,我会更新我的回答并让你知道!