我正在尝试为https绑定创建WCF服务。该服务之前正在使用http。我更改了绑定(带证书),现在我配置了web.config - 但我总是收到错误代码“400 - Bad Request”。
通过以下方式调用Web服务: https://servername:444/FolderService.svc/FolderExists/1234 https://servername:444/FolderService.svc/Test
这是我的服务界面:
[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>
我尝试了很多不同的配置而没有成功。有没有人有想法(或一个工作实例)?
提前致谢!
答案 0 :(得分:1)
您正尝试通过URL以RESTful方式访问您的方法。但是,web.config中的错误在于您使用的是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>