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>
我尝试了很多不同的配置都没有成功。有没有人有一个想法(或一个工作的例子)?
提前感谢!
您试图通过URL以RESTful方式访问您的方法。然而,你的网站有什么问题。您正在使用的BasicHttpBinding
用于SOAP web服务,而不是RESTful web服务。
WebGet
和WebInvoke
是添加到您已经完成的操作中的必要属性。
但是,端点的正确绑定是WebHttpBinding
,您需要应用到端点的行为是WebHttpBehavior
。
示例简化配置:
<service>
<endpoint behaviorConfiguration="webBehavior"
binding="webHttpBinding"
contract="myService.IFolderService"
bindingConfiguration="secureHttpBinding" />
</service>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>