托管WCF服务时在svcutil中获取计算机名称

时间:2011-01-19 10:19:26

标签: wcf

我在生产服务器的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”

2 个答案:

答案 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配置,而且可扩展性更高。

希望这有帮助。