Я пытаюсь создать службу WCF и вызывать ее методы с помощью jquery AJAX. До сих пор я не мог понять, как это сделать. Я прочитал некоторые из решений, приведенных в SO, но все еще не в состоянии его исправить. Любая помощь будет оценена по достоинству. У меня есть следующий код.Вызов службы WCF из jquery Ajax
В службе WCF.
Сервисный контракт
[ServiceContract]
public interface IDatingService
{
[WebInvoke(Method = "POST",
RequestFormat= WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/AddUser")]
[OperationContract]
User AddUser(User user);
}
Реализация
public User AddUser(User user)
{
return userRepository.Add(user);
}
Конфигурация
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="DatingServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="DatingServiceBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="DatingServiceBehavior"
name="DatingService.Service.DatingService">
<endpoint address="" binding="webHttpBinding"
contract="DatingService.Service.IDatingService"
behaviorConfiguration="DatingServiceBehavior"/>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
</system.serviceModel>
Со стороны клиента, я использую следующий код для вызова службы.
saveInfo: function() {
console.log('saveInfo');
if ($('#terms-check').is(":checked")) {
if (app.validateEmail()) {
var input =
{
"user":
{
"LoginId": user.LoginId.text(),
"Password": user.Password.text(),
"Email": user.Email.val()
}
};
$.ajax({
type: "POST",
url: "http://localhost:36908/DatingService.svc/AddUser",
data: JSON.stringify(input),
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: app.onSaveSuccess,
error: app.onSaveError
});
}
else {
$('.error-label').text('Invalid email address.');
}
}
else {
$('.error-label').text('Please check the terms and conditions.');
}
}
Когда я звоню в службу, я получаю неверный запрос.
@PSL, я попытался обертывание сообщение в «AddUser», но до сих пор не повезло. Такая же ошибка. –
Вы пробовали использовать URL-адрес браузера?, Что вы получаете? – MSUH
@MSUH, когда я попытался из браузера, я получаю, что Endpoint не найден. Как вы думаете, в чем проблема? Я не вижу никаких проблем в конфигурации. –