我正在编写一个处理 sms-contacts 的 web api2 程序。服务器上有一个 JSON 帖子,如下所示:
{
"Id":"4",
"ClientId":"2",
"NoOfRecipient":"3",
"Numbers":
{
"num1":9898776568,
"num2":9087674589
},
"Msg":"This is a test"
}
在服务器中,我有一个类来处理这个 JSON,如下所示:
public class SmsData
{
public int Id { get; set; }
public int ClientId { get; set; }
public int NoOfRecipient { get; set; }
public IEnumerable<Numbers> Numbers { get; set; }
public string Msg { get; set; }
public DateTime SentDate { get; set; }
}
public class Numbers{
public int Id { get; set; }
public long Number { get; set; }
}
[Table("SmsData")]
public class StoreSmsData
{
public int Id { get; set; }
public int ClientId { get; set; }
public int NoOfRecipient { get; set; }
}
[Table("SmsSentNumbers")]
public class SentNumbers
{
public int Id { get; set; }
public int ClientId { get; set; }
public long Numbers { get; set; }
public int NumbersId { get; set; }
public string Msg { get; set; }
public DateTime SentDate { get; set; }
}
控制器是:
public HttpResponseMessage Post(SmsData smsData)
{
SmsHandler smsHandler = new SmsHandler();
Clients client = smsHandler.GetClient(smsData.ClientId);
if (client == null)
{
return Request.CreateResponse<SmsData>(HttpStatusCode.NotFound, smsData);
}
else if (smsData.NoOfRecipient > client.SmsAllowed)
{
return Request.CreateResponse<SmsData>(HttpStatusCode.NotAcceptable, smsData);
}
StoreSmsData ssd = new StoreSmsData();
ssd.ClientId = smsData.ClientId;
ssd.NoOfRecipient = smsData.NoOfRecipient;
ssd = dbContext.StoreSmsData.Add(ssd);
dbContext.SaveChanges();
var response = Request.CreateResponse<StoreSmsData>(HttpStatusCode.Created, ssd);
SentNumbers sn = new SentNumbers();
foreach(Numbers num in smsData.Numbers){
sn.ClientId = smsData.ClientId;
sn.Msg = smsData.Msg;
sn.SentDate = smsData.SentDate;
sn.Numbers = num.Number;
sn.NumbersId = num.Id;
dbContext.SentNumbers.Add(sn);
dbContext.SaveChanges();
}
response = Request.CreateResponse<SentNumbers>(HttpStatusCode.Created, sn);
return response;
}
现在,当我访问服务器时,它会返回此响应消息:
{
"Message":"An error has occurred.",
"ExceptionMessage":"Object reference not set to an instance of an object.",
"ExceptionType":"System.NullReferenceException",
"StackTrace":" at System.Web.Http.ApiController.<InvokeActionWithExceptionFilters>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()"
}
我无法理解这个问题。我怎样才能将数字存储在不同的表中。 此外,当我使用断点进行调试时, Numbers 和 Msg 值为 null。我如何存储号码。在客户端,帖子很好......