我正在Windows服务托管容器中托管一个wcf rest服务,并且遇到了将来自不同dns名称的http请求映射到给定wcf端点的问题。似乎请求是通过IP地址映射的,并且dns名称被忽略。我一直在研究是否可以在托管为Windows服务时为给定的http wcf端点添加“主机头”。我知道这是IIS用来使用单个IP地址明确地将多个网站dns名称映射到不同网站的机制。这个映射机制是否与它作为Windows服务托管的wcf http端点可用的类似?
例如,如果我在同一端口上配置了两个端点:
<system.serviceModel>
<services>
<service name="RequestInstanceService">
<endpoint address="http://dns1.mydomain.com/requestinstanceservice" binding="webHttpBinding" contract="MyService.IRequestInstanceService" >
</endpoint>
</service>
<service name="CentralKeyingAuthorityService">
<endpoint address="http://dns2.mydomain.com/ckaservice" binding="webHttpBinding" contract="MyService.ICentralKeyingAuthorityService" >
</endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior>
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings />
</system.serviceModel>
我希望能够明确地将来自dns1.mydomain.com的请求映射到requestinstanceservice,并将请求从dns2.mydomain.com映射到ckaservice。如果托管在IIS中,我的假设是我可以为dns1.mydomain.com和dns2.mydomain.com设置主机头,以将请求定向到相应的网站(wcf主机)。
由于我在Windows服务主机中托管这些wcf服务,行为似乎有点不同。看起来dns组件是无关紧要的,因为我可以使用dns名称到达requestinstanceservice端点:
http://dns1.mydomain.com/requestinstanceservice 要么 http://dns2.mydomain.com/requestinstanceservice
有人可以帮我理解如何使映射不同,以便在映射中考虑dns名称吗?