У меня есть служба WCF, которая разрешает только HTTP-запросы GET:
[WebInvoke(Method="GET", ResponseFormat=WebMessageFormat.Json)]
public string GetAppData()
Служба предоставляется с помощью webHttpBinding
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="AppSvcBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
У меня есть клиент, чейконфиг выглядит как
<system.serviceModel>
<client>
<endpoint address="http://localhost/AppService/Service.svc"
binding="webHttpBinding"
bindingConfiguration="webHttpBindingConfig"
contract="AppSvc.IService"
behaviorConfiguration="AppSvcBehavior"
name="AppSvcClient">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</client>
<bindings>
<webHttpBinding>
<binding name="webHttpBindingConfig">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="AppSvcBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
Мой код клиента прост:
ServiceClient client = new ServiceClient("AppSvcClient");
String result = client.GetAppData();
При выполнении этого кода я получаю ошибку:
Удаленный сервер возвратилнеожиданный ответ: (405) Метод не разрешен.
Я проверил с помощью fiddler и обнаружил, что мой клиент отправляет сообщение POST, тогда как служба ожидает GET, следовательно, ошибка.
Iхотите знать, как настроить клиент так, чтобы он отправлял GET-запрос в службу.