JQuery发布到WCF服务

时间:2011-08-31 23:46:37

标签: c# asp.net wcf

在将JSON数据发布到以下WCF服务时,接收错误“对象引用未设置为对象的实例”。

我的猜测是员工对象未初始化,但我不确定应该在哪里完成,因为当我使用字符串进行测试时,它工作正常。

非常感谢任何建议。

接口(IAccount.cs):

[ServiceContract(Namespace = "AccountService")]   
public interface IAccountService
    {        
        [OperationContract, WebInvoke(Method = "POST",
     BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        string CreateAccount(Employee employee);        
    }

[DataContract]
    public class Employee
    {
        [DataMember]
        public string firstName { get; set; }

        [DataMember]
        public string lastName {get; set;}

}

实施(AccountService.svc)

AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class AccountService: IAccountService
    {
        public string CreateAccount(Employee employee)
        {
            string test = employee.firstName;

            return test;
        }
    }

JSON发布数据:

{ “名字”: “测试”, “姓氏”: “用户”}

2 个答案:

答案 0 :(得分:1)

确定最终对此进行了整理,希望这可以帮助有同样问题的人。

我的初始JSON看起来正确但不起作用:{“firstName”:“Test”,“lastName”:“User”}。但是通过查看服务器跟踪,您可以看到内置的XML DeSerializer无法将元素映射到WCF服务方法中的对象(在我的情况下为employee对象),这是空引用错误的原因。

将表单属性放在一个与服务参数名称匹配的对象中,但却有诀窍:{“employee”:{“firstName”:“test”}}

答案 1 :(得分:0)

默认情况下,WebGet的RequestFormat设置为XML。把它设置为Json。