IIS:使用https和GET的WCF服务HTTP 400错误

本文关键字:服务 WCF HTTP 错误 GET 使用 https IIS | 更新日期: 2023-09-27 17:52:42

我正在尝试为https绑定创建一个WCF服务。该服务之前使用http。我改变了绑定(带证书),现在我配置web。配置-但我总是得到错误代码"400 -错误的请求"。

web服务被调用:https://servername:444/FolderService.svc/FolderExists/1234https://servername: 444/FolderService.svc/测试

这是我的服务接口:
[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();
}

这是我的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>

我尝试了很多不同的配置都没有成功。有没有人有一个想法(或一个工作的例子)?

提前感谢!

IIS:使用https和GET的WCF服务HTTP 400错误

您试图通过URL以RESTful方式访问您的方法。然而,你的网站有什么问题。您正在使用的BasicHttpBinding用于SOAP web服务,而不是RESTful web服务。

WebGetWebInvoke是添加到您已经完成的操作中的必要属性。

但是,端点的正确绑定是WebHttpBinding,您需要应用到端点的行为是WebHttpBehavior

示例简化配置:

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