c# - 如何从 ajax 调用 WCF 服务?

标签 c# asp.net ajax wcf

我有一个 WCF 服务,如下所示 -

 [ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Sync
{
    [OperationContract]
    [WebInvoke]
    public string SyncDataNow(UserData obj)
    {
        try
        {
            using (MavenifyEntities db = new MavenifyEntities())
            {
                bool userExist = db.Users.Any(u => u.Id == obj.UserId);
                if (userExist)
                {
                    DataSync data = new DataSync();
                    data.UserId = obj.UserId;
                    data.TempId = obj.TempId;
                    data.Content = obj.Content;
                    data.CreatedDate = DateTime.Now.ToString();
                    db.DataSyncs.Add(data);
                    db.SaveChanges();
                    return "1";
                }
                else
                {
                    return "0";
                }
            }
        }
        catch (Exception ex)
        {
            return "error";
        }
    }
}

[DataContract(Namespace = "")]
public class UserData
{
    [DataMember]
    public int UserId { get; set; }
    [DataMember]
    public string Content { get; set; }
    [DataMember]
    public string TempId { get; set; }
}

当我从 POSTMAN 调用此服务时,它收到空数据,请帮助我找出我在做什么错。

我正在以 json 格式发送原始数据,例如-

{"UserData":{"UserId":"1","TempId":"asdbsjiadf","Content":"Hello"}}.

我的 web.config 条目是-

 <system.serviceModel>
<behaviors>
  <endpointBehaviors>
    <behavior name="PhoneSync.SyncAspNetAjaxBehavior">
      <enableWebScript />
    </behavior>
  </endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
  <service name="PhoneSync.Sync">
    <endpoint address="" behaviorConfiguration="PhoneSync.SyncAspNetAjaxBehavior" binding="webHttpBinding" contract="PhoneSync.Sync" /> 
  </service>
</services>

最佳答案

确保请求/响应默认为 Json。我会在 [WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)]

中明确指定

配置一些选项也许有意义 like suggested here

关于c# - 如何从 ajax 调用 WCF 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33257183/

相关文章:

php - $.ajax 尝试在新加载的 ajax 页面中获取 $_GET 查询变量

c# - 如何将这种科学记数法转换为十进制?

javascript - 将值从 Default.aspx.cs 页面发送到 Default.aspx 页面 javascript 函数

javascript - Croppie.js 图像裁剪器添加旋转功能

c# - 如何在 C# 中动态创建字符串?

c# - 代码隐藏中的 XPath/Grabbing 节点值

javascript - 从外部文件加载 html 而不会丢失 &lt;script&gt; 标签?

c# - 是否可以从 Dynamics CRM 2013 中的代码更改工作流步骤属性

c# - pl/sql 查询和 .net 的奇怪行为

javascript - ClientScript 在 C# 类上无法正常工作