WCF元数据在HTTPS上显示不正确的服务URI

时间:2018-04-24 12:07:54

标签: wcf https

使用.NET 4.7.1和最小的WCF配置,WSDL在从HTTPS访问时显示HTTP地址,并显示错误的主机,除非在配置中启用了端口80.

此服务应仅在HTTPS上可用,这将由防火墙规则进一步强制执行。

我的配置如下所示

<system.serviceModel>     
  <behaviors>     
    <serviceBehaviors>  
      <behavior>  
        <serviceMetadata httpsGetEnabled="True"/>   
        <useRequestHeadersForMetadataAddress/>          
      </behavior>  
    </serviceBehaviors>  
  </behaviors>  
</system.serviceModel> 

结果在浏览器中看起来像这样(演示错误的方案和不正确的主机。抱歉我必须阻止大部分内容,但你应该能够得到我所说的......)

resulting wsdl

我理解&#34; useRequestHeadersForMetadataAddress&#34;告诉WCF我确实希望WSDL就在服务旁边。我认为它也应该能够处理相同的计划意图。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我的问题是假设我不需要指定绑定配置。如果没有绑定配置,我不认为WCF可以找出你想要的HTTPS绑定,并且所有问题都从那里流出。

所以,不幸的是,我的web.config增长到它的两倍!

      <basicHttpBinding>
    <binding name="SecureServiceBinding" closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="20480000" maxBufferSize="10240000" maxReceivedMessageSize="10240000" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
      <readerQuotas maxDepth="100" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="2147483647"/>
      <security mode="Transport">
        <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
        <message clientCredentialType="UserName" algorithmSuite="Default"/>
      </security>
    </binding>
  </basicHttpBinding>