C# 从jquery Ajax调用WCF服务

C# 从jquery Ajax调用WCF服务,c#,jquery,ajax,json,wcf,C#,Jquery,Ajax,Json,Wcf,我试图创建一个WCF服务,并使用jQueryAjax调用其方法。到目前为止,我还不知道怎么做。我已经阅读了SO中给出的一些解决方案,但仍然无法修复它。任何帮助都将不胜感激。我有以下代码 在WCF服务中 服务合同 [ServiceContract] public interface IDatingService { [WebInvoke(Method = "POST", RequestFormat= WebMessageFormat.Json, ResponseFormat = W

我试图创建一个WCF服务,并使用jQueryAjax调用其方法。到目前为止,我还不知道怎么做。我已经阅读了SO中给出的一些解决方案,但仍然无法修复它。任何帮助都将不胜感激。我有以下代码

在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>

当我调用该服务时,我收到了错误的请求。

问题可能与“localhost:36908”有关,您需要确保您的服务已启动并托管在同一端口上,您可以转到WCF项目属性并选择“使用Visual studio developer server”,选中“特定端口”选项并在其中写入36908,然后启动development server或调试启动解决方案,再次尝试点击url。

您应该像这样构造对象。您收到400个错误请求,因为wcf希望数据采用ajax不发送的格式

var obj = {};
obj.LoginId = user.LoginId.text();
obj.Password = user.Password.text();
obj.Email =  user.Email.val();

var jsonObj=JSON.stringify(obj);
var dataToSend = '{"user":'+jsonObj+'}';
然后在ajax查询中更改数据部分

       $.ajax({
                type: "POST",
                url: "http://localhost:36908/DatingService.svc/AddUser",
                data: JSON.stringify({user:obj}),
    or
                data: dataToSend,
                contentType: 'application/json; charset=utf-8',
                dataType: "json",
                success: app.onSaveSuccess,
                error: app.onSaveError
            });

@PSL,我尝试过用“AddUser”包装消息,但仍然没有成功。同样的错误。你尝试过从浏览器中点击url吗?你得到了什么?@MSUH,当我尝试从浏览器中点击时,我得到了未找到的端点。你认为问题是什么?我看不出配置中有任何问题。
       $.ajax({
                type: "POST",
                url: "http://localhost:36908/DatingService.svc/AddUser",
                data: JSON.stringify({user:obj}),
    or
                data: dataToSend,
                contentType: 'application/json; charset=utf-8',
                dataType: "json",
                success: app.onSaveSuccess,
                error: app.onSaveError
            });