IIS: WCF service with https and GET

I am trying to create a WCF Service for https binding. The service was working with http before. I changed the binding (with certificate) and now I configure the web.config - but I always get error code "400 - Bad Request".

The web service is called with: https://servername:444/FolderService.svc/FolderExists/1234 https://servername:444/FolderService.svc/Test

This is my service interface:

[ServiceContract]
public interface IFolderService
{
    [OperationContract]
    [WebGet(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/FolderExists/{accountnumber}")]
    bool FolderExists(string accountnumber);

    [OperationContract]
    [WebGet(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/Test")]
    string Test();
}

And this is my web.config:

<?xml version="1.0"?>
<configuration>

  <system.serviceModel>
    <services>
      <service name="myService.FolderService">
        <endpoint address=""
                  binding="basicHttpBinding"
                  bindingConfiguration="secureHttpBinding"
                  contract="myService.IFolderService"/>
      </service>
    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="secureHttpBinding">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpsGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>

I tried so many different configuration without success. Does anyone have an idea (or a working example)?

Thanks in advance!


You are trying to access your methods in a RESTful manner via a URL. However, what you have wrong in your web.config is that you are using BasicHttpBinding which is for SOAP web services and not RESTful web services.

WebGet and WebInvoke are the necessary attributes to add to your operations as you have already done.

However, the correct binding for the endpoint is WebHttpBinding and the behavior you need to apply to the endpoint is the WebHttpBehavior .

Sample Abbreviated Configuration:

<service> 
    <endpoint behaviorConfiguration="webBehavior" 
              binding="webHttpBinding" 
              contract="myService.IFolderService" 
              bindingConfiguration="secureHttpBinding" /> 
</service> 

<endpointBehaviors> 
    <behavior name="webBehavior"> 
        <webHttp /> 
    </behavior> 
</endpointBehaviors> 
链接地址: http://www.djcxy.com/p/42026.html

上一篇: 看起来像我的MVC网站中的查询字符串参数长度问题

下一篇: IIS:使用https和GET的WCF服务