我使用HTTPS运行我的WCF服务,它显示了Infopage,但下面的“使用以下语法测试此服务,...:”是:
svcutil.exe https://servername.group.service.com/MyService.svc?wsdl
(服务器的完整地址)
如何使用正确的网址https://my.service.com/MyService.svc?wsdl(已分配的主机头),而不是显示正确的网址(<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已存在注册”
答案 0 :(得分:4)
您指定已设置主机标头。它是为SSL设置还是仅为Http设置。请记住,IIS UI没有为SSL设置主机标头的字段。您需要使用管理脚本(IIS 6.0)或netsh.exe来更高版本的IIS。
答案 1 :(得分:0)
你可以在下面的StackOverflow link找到一些背景知识 - 我会尝试的第一件事(他们给出几个不同的场景,更多涉及)将是在服务端点上设置Listen URI定义。当我在我的应用程序中获得WSDL地址时遇到问题时,我能够设置它来纠正它。在那种情况下,我只是试图修复该方案(我们在BIGIP背后,它正在终止SSL,因此即使服务器端的WCF认为它正在获取http,该方案仍需要https。)
<endpoint address="https://www.sslloadbalancer.com" binding="someBinding" contract="IMyServiceInterface" listenUri="http://www.servicehost.com" ... />
我相信会为你修复WSDL