将WCF Web服务绑定到特定的网络接口/ IP

时间:2010-05-12 16:07:47

标签: wcf binding interface web-services networking

在具有多个网卡的计算机上,我需要将WCF Web服务绑定到特定的网络接口。似乎默认是在所有网络接口上绑定。

本机有两个网络适配器,其IP为192.168.0.10192.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”。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我们在我的工作场所遇到了类似的问题,当我偶然发现你的帖子时,我正在研究它。我还没有机会尝试它,但是计划当我们有机会时:Binding上有一个“hostNameComparisonMode”,当设置为“Exact”时,应该始终服从你的设置。 (如果找不到匹配项,则默认允许它转到通配符。)

如果你有机会在我之前尝试这个,请告诉我结果。否则,我会更新我的回答并让你知道!