使用SSL的WCF配置到HTTPS无法正常工作

时间:2015-07-30 11:57:36

标签: wcf

我正在尝试使用WCF使用HTTPS服务,但它会不断返回各种错误。当我使用basicHttpBinding来调用HTTP网址时,它工作正常,但当我切换到webHttpBindingwsHttpBinding并调用HTTPS网址时,我收到了以下错误:

The content type text/xml;charset=utf-8 of the response message does not match the content 
type of the binding (application/soap+xml; charset=utf-8). If using a custom encoder, 
be sure that the IsContentTypeSupported method is implemented properly.

这是我的配置:

<system.serviceModel>

    <services>
      <service behaviorConfiguration="ServiceBehavior" name="MentorGraphicsIM">
        <endpoint name="MentorGraphicsServiceEndPoint"
                  address=""
                  binding="webHttpBinding"
                  bindingConfiguration="webHttpPadsTouch"
                  behaviorConfiguration="ServiceEndPointBehavior"
                  contract="IMentorGraphics">
        </endpoint>
      </service>
    </services>

    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding" />
      </basicHttpBinding>

      <webHttpBinding>
        <binding name="webHttpPadsTouch">
        </binding>
      </webHttpBinding>

      <wsHttpBinding>
        <binding name="WsHttpBinding">
          <security mode="Transport" />
        </binding>
      </wsHttpBinding>
    </bindings>

    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>

      <!--Required default endpoint behavior when using webHttpBinding-->
      <endpointBehaviors>
        <behavior name="ServiceEndPointBehavior">
          <webHttp  />
        </behavior>

        <behavior name="ClientEndPointBehavior">
          <webHttp defaultBodyStyle="Wrapped" defaultOutgoingResponseFormat="Xml" helpEnabled="true" />
        </behavior>
      </endpointBehaviors>
    </behaviors>

    <client>
      <endpoint name="PadsTouch_HTTP"
                address="https://XXX"
                binding="wsHttpBinding"
                bindingConfiguration="WsHttpBinding"

                contract="IEntitle" />
    </client>

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"  multipleSiteBindingsEnabled="true" />

  </system.serviceModel>

我的界面是:

[ServiceContract(Namespace = "xxx", ProtectionLevel = ProtectionLevel.None)]
    public interface IMentorGraphics
    {
        [OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "MyMethod", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
        ServiceResponse MyMethod(MyParams @param);
    }

1 个答案:

答案 0 :(得分:0)

将服务绑定从bindingConfiguration="webHttpPadsTouch"替换为bindingConfiguration="WsHttpBinding"