在将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发布数据:
{ “名字”: “测试”, “姓氏”: “用户”}
答案 0 :(得分:1)
确定最终对此进行了整理,希望这可以帮助有同样问题的人。
我的初始JSON看起来正确但不起作用:{“firstName”:“Test”,“lastName”:“User”}。但是通过查看服务器跟踪,您可以看到内置的XML DeSerializer无法将元素映射到WCF服务方法中的对象(在我的情况下为employee对象),这是空引用错误的原因。
将表单属性放在一个与服务参数名称匹配的对象中,但却有诀窍:{“employee”:{“firstName”:“test”}}
答案 1 :(得分:0)
默认情况下,WebGet的RequestFormat设置为XML。把它设置为Json。