我在生产服务器的IIS中的inetmgr中托管了一个域/网站(HTTR.abc.com)。 我想在域名HTTR.abc.com下托管WCF服务 我的WCF服务的web.config如下
<services>
<service behaviorConfiguration="HTTR.Business.HTTRContextServiceBehavior" name="HTTR.Business.HTTRContextService">
<endpoint address="http://machinename:83/GTYEBus/abcService.svc" binding="wsHttpBinding" contract="HTTR.Business.IHTTRContextService">
</endpoint>
</service>
</services>
当我运行URL时 “http://HTTR.abc.com/GTYEBus/abcService.svc”页面显示正确,但它正在显示 WSDL文件指向“http:// machinename:83 / GTYEBus / abcService.svc?WSDL”
我希望页面显示与.svc路径相同路径的WSDL,它应该显示为“http://HTTR.abc.com/GTYEBus/abcService.svc?WSDL”而不是 的 “http://机器:83 / GTYEBus / abcService.svc WSDL”
答案 0 :(得分:1)
我遇到了这个问题,同时找到解决同一问题的方法。
这最终成为网站没有主机名的问题。
在IIS7.5中,只需将主机名添加到绑定的主机头中。如果是https,则可以保护主机头。您需要通过将*作为证书友好名称的开头来使证书成为伪通配符证书。然后主机名将是可编辑的。
This link对IIS6中的分辨率有很好的描述
答案 1 :(得分:0)
在web.config的serviceMetadata部分中,您可以包含属性externalMetadataLocation并将其引用到“http://httr.abc.com/GTYEBus/abcService.svc?wsdl”位置。例如:
<serviceMetadata externalMetadataLocation="http://httr.abc.com/GTYEBus/abcService.svc?wsdl" />
以下是serviceMetaData配置部分的MSDN参考:http://msdn.microsoft.com/en-us/library/ms731317.aspx。
这不需要任何其他IIS配置,而且可扩展性更高。
希望这有帮助。