为自托管WCF服务指定单个地址

本文关键字:单个地址 服务 WCF | 更新日期: 2023-09-27 18:19:18

我编写了一个自托管的WCF服务,它需要在具有多个地址的机器上的一个特定地址上运行。为此,我编写了配置,以便在端点中指定要使用的地址:

<endpoint address="http://A.B.C.D:8000/MyService" binding="webHttpBinding" name="MyServiceEndpoint" behaviorConfiguration="MyServiceBehavior" contract="IMyServiceInterface" />

当我运行这个应用程序并启动服务时,它在所有地址上运行,而不是指定的一个。我尝试将地址移动到baseAddress字段中,并将端点地址留空,但得到了完全相同的结果。我错过了什么?

为自托管WCF服务指定单个地址

好了,对于其他碰巧遇到这个问题的人来说,这不是服务配置的问题,而是绑定配置的问题。

webHttpBinding绑定的hostNameComparisonMode属性默认为StrongWildcard

这意味着http服务忽略主机名并响应任何主机名。作为副作用,它在机器上的所有开放地址上运行。

如果将此值更改为Exact,则它使用在端点或基址中指定的主机名或IP地址。