У меня есть служба WCF, которая принимает в качестве параметра строковое значение «имя». Этот интерфейс службы выглядит следующим образом ...
[ServiceContract(Name = "ContactLookup", Namespace = "Search")]
public interface IAjaxResultSearcherService
{
[OperationContract]
[WebGet(RequestFormat = WebMessageFormat.Json)]
Result[] SearchResultsWithNameLike(string name);
}
Служба может использовать следующую конфигурацию ...
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<behaviors>
<serviceBehaviors>
<behavior name="AjaxServiceBehavior">
<serviceDebug
includeExceptionDetailInFaults="true"
httpHelpPageEnabled="true"/>
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
<serviceCredentials>
<serviceCertificate findValue="localhost"
storeLocation="LocalMachine"
storeName="My" x509FindType="FindBySubjectName"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="JsonBehavior">
<enableWebScript/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="HelloIndigo.AjaxResultSearcherService"
behaviorConfiguration="AjaxServiceBehavior">
<endpoint address="json"
binding="webHttpBinding"
behaviorConfiguration="JsonBehavior"
contract="Contract.IAjaxResultSearcherService" />
</service>
</services>
</system.serviceModel>
Мой файл .svc использует WebScriptServiceHostFactory. Кажется, это работает, это означает, что я могу подключиться к службе из моего клиента jquery, но даже если я установил значение параметра с помощью вызова ajax, когда сообщение попадает в реализацию службы, значение параметра равно нулю.
Я звоню в сервис через jquery, вот так ...
$.ajax({
url: url,
data: { "name":"test" },
type: "GET",
processData: false,
contentType: "application/json",
timeout: 10000,
dataType: "text",
success: function(res) {
alert('function successful! returned: ' + res.toString());
},
error: function(xhr) {
alert('an error occurred: ' + xhr.responseText);
}
});
Я не получаю ошибок от вызова службы, но когда я отлаживаю процесс, значение параметра равно нулю. Почему WCF не передает значения параметров, как я ожидал?
Спасибо за помощь.