我编写了一个自托管的WCF服务,需要在具有多个地址的计算机上的一个特定地址上运行。为此,我编写了配置,以便在端点中指定要使用的地址:
<endpoint address="http://A.B.C.D:8000/MyService" binding="webHttpBinding" name="MyServiceEndpoint" behaviorConfiguration="MyServiceBehavior" contract="IMyServiceInterface" />
当我运行此应用程序并启动该服务时,它正在所有地址而不是指定的地址上运行。我尝试将地址移动到baseAddress字段并将端点地址留空,但得到了完全相同的结果。我错过了什么?
答案 0 :(得分:2)
好的,对于碰巧遇到此问题的其他人来说,它不是服务配置,而是绑定配置。
webHttpBinding
绑定的hostNameComparisonMode
属性默认为StrongWildcard
。
这意味着http服务会忽略主机名并响应任何主机名。作为副作用,它在机器上的所有打开地址上运行。
如果此值更改为Exact,则它使用在端点或基址中指定的主机名或IP地址。