代码之家  ›  专栏  ›  技术社区  ›  Hinek

使用WCF(https)时WSDL超链接中的URL错误

  •  6
  • Hinek  · 技术社区  · 14 年前

    我得到了我的WCF服务与HTTPS运行,它显示了Infopage,但下面的URL“要测试这个服务。。。使用以下语法:“is:

    svcutil.exe https://servername.group.service.com/MyService.svc?wsdl (服务器的完整地址)

    而不是正确的URL https://my.service.com/MyService.svc?wsdl (分配的hostheader),如何让它显示正确的URL( <URL of the Service> + ?wsdl

    <services>
      <service name="MyService" behaviorConfiguration="MyServer.MyServiceBehavior">
        <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBigStrings" contract="IMyService">
        </endpoint>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyService.MyServiceBehavior">
          <serviceCredentials>
            <serviceCertificate findValue="my.service.com" x509FindType="FindBySubjectName"/>
          </serviceCredentials>
          <serviceMetadata httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpBigStrings">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
          <readerQuotas maxStringContentLength="1048576" />
        </binding>
      </basicHttpBinding>
    </bindings>
    

    我已经试着改变了 <serviceMetadata httpsGetEnabled="true"/> <serviceMetadata httpsGetEnabled="true" httpsGetUrl="https://my.service.com/MyService.svc"/> 但它只是说:“URI的注册已经存在 https://my.service.com/MyService.svc "

    2 回复  |  直到 14 年前
        1
  •  4
  •   amit    14 年前

    您指定已设置主机头。它是为SSL设置的还是仅为Http设置的。记住,iisui没有为SSL设置主机头的字段。您需要使用管理脚本(iis6.0)或netsh.exe用于更高版本的IIS。

        2
  •  0
  •   Community Ian Goodfellow    7 年前

    您可以在下面的StackOverflow中找到一些关于这个的背景 link -我要尝试的第一件事(他们给出了几个不同的场景,这些场景稍微复杂一些)是在服务端点定义上设置侦听URI。当我在应用程序中获取正确的WSDL地址时,我能够设置它来纠正它。在这种情况下,我只是试图修复该方案(我们在BIGIP后面,它正在终止SSL,因此该方案需要是https,即使服务器端的WCF认为它正在获取http)。

    <endpoint address="https://www.sslloadbalancer.com" binding="someBinding" contract="IMyServiceInterface" listenUri="http://www.servicehost.com" ...  />
    

    我相信这将为您修复WSDL