svcutil.exe返回的“.svc”文件和“.svc?wsdl”的URL地址不匹配

时间:2015-10-15 07:52:40

标签: web-services wcf wsdl svcutil.exe

我有一个WCF服务,它位于负载均衡器后面的IIS中。 .svc文件位于以下URL https://my-site-domain-Name.xyz.com/test/Service1.svc

我可以成功浏览到上面的网址并使用

获取页面
  

“您已创建了一项服务。

     

要测试此服务,您需要创建一个客户端并将其用于   打电话给服务。您可以使用svcutil.exe工具执行此操作   命令行,语法如下:

     

svcutil.exe https://server-host-name.xyz.com/test/Service1.svc?wsdl

注意我浏览了https://my-site-domain-Name.xyz.com/test/Service1.svc使用了域名),但 svcutil.exe 旁边返回的网址指向https://server-host-name.xyz.com/test/Service1.svc?wsdl使用计算机名称

这是预期的行为吗? 是不是svcutil.exe也应该指向这个 https://my-site-domain-Name.xyz.com/test/Service1.svc?wsdl

为什么 svcutil.exe 指向服务器计算机名而不是域名?

我的绑定定义如下

<endpoint address="" binding="customBinding" contract="App1.IService" bindingConfiguration="myBindingConfig" />

可能是因为端点地址=“”(空)?

现在尝试浏览到svcutil.exe指向的.svc?wsdl地址,返回错误

  

HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

1 个答案:

答案 0 :(得分:0)

在web.config中使用选项useRequestHeadersForMetadataAddress。例如:

<behavior name="TransmiteMensagemTISSBehavior">
    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <useRequestHeadersForMetadataAddress>      
      <defaultPorts>
        <add port="80" scheme="http"/>
      </defaultPorts>
    </useRequestHeadersForMetadataAddress>    
</behavior>