在wsdl中更改架构位置

Has*_*der 0 c# wcf

我在我的web.config for WCF中有以下配置.

<serviceMetadata httpGetEnabled="true" /> 
Run Code Online (Sandbox Code Playgroud)

所以一旦我这样做,我将获得wsdl中的模式位置

<xsd:import schemaLocation="http://mysever/Projectname/Services/myService?xsd=xsd0" namespace="MyServiceHost/Service/01/2011"/>
Run Code Online (Sandbox Code Playgroud)

但我想将其更改为https:// mysever/Projectname/Services/myService?xsd = xsd0.

我无法启用httpsGetEnabled = true,因为我将通过http获取wsdl,但我希望在https中获得服务请求.

我正在使用负载均衡器,其中负载均衡器对Web服务器的流量超过http.

有什么建议?

k0s*_*tya 5

我建议使用WCFExtras(HOWTO)或WCFExtrasPlus.

如何使用ECFExtras:

  1. 将以下扩展名添加到配置文件中

    <extensions>
      <behaviorExtensions>
        <add
          name="wsdlExtensions"
          type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Culture=neutral"
        />
      </behaviorExtensions>
    </extensions>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加自定义行为

    <behavior name="CustomBehavior">
      <wsdlExtensions location="https://mysever/Projectname/Services/myService.svc"/>
    </behavior>
    
    Run Code Online (Sandbox Code Playgroud)

您也可以使用SoapExtensionReflector.

此外,您需要将以下属性添加到服务声明中,以便能够通过负载均衡器使用该服务.

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
Run Code Online (Sandbox Code Playgroud)