【问题标题】:Getting machine name in the svcutil when hosting WCF service托管 WCF 服务时在 svcutil 中获取计算机名称
【发布时间】:2011-06-11 16:03:31
【问题描述】:

我在生产服务器的 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://machinename:83/GTYEBus/abcService.svc?WSDL"

【问题讨论】:

    标签: wcf


    【解决方案1】:

    我在寻找解决同一问题的方法时遇到了这个问题。

    这最终成为网站没有主机名的问题。

    在 IIS7.5 中,只需在绑定的主机头中添加主机名即可。如果是https,则可能会保护主机头。您需要通过将 * 作为证书友好名称的开头来使证书成为伪​​通配符证书。然后主机名将是可编辑的。

    This link对IIS6中的分辨率有很好的描述

    【讨论】:

      【解决方案2】:

      在 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 配置并且更具可扩展性。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2010-10-02
        • 1970-01-01
        • 1970-01-01
        • 2019-03-02
        • 1970-01-01
        • 2016-12-15
        • 2014-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多