2
我希望有人能帮助我。我有一个WCF REST服务,它正在为所有GET功能正常工作。但我不能让POST方法工作。我的服务合同是从MVC客户端POST BAD请求调用MS WCF REST服务c#
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "NewEmployeeLeave/")]
string addTimeOff(mmpTimeOff data);
这是调用下面
// addTimeOff
// Add a new time off record with passed information
public string addTimeOff(mmpTimeOff data)
{
try
{
// Add the new record to the employees leave requests
mmpTimeOff newTimeOff = data;
db.TimeOffs.Add(new TimeOff
{
StartDate = newTimeOff.StartDate,
EndDate = newTimeOff.EndDate,
PersonId = newTimeOff.PersonId,
Manager = newTimeOff.Manager,
TimeOffType = newTimeOff.TimeOffType,
Status = newTimeOff.Status,
Notes = newTimeOff.Notes
});
db.SaveChanges();
}
// Make sure that we can push the error back to the client.
catch (Exception e)
{
return e.Message;
}
return "ok";
}
客户端代码如下所示。
client = new HttpClient();
HttpResponseMessage response=new HttpResponseMessage();
mmpPerson user = new mmpPerson();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
mmpTimeOff newLeave = new mmpTimeOff()
{
PersonId = user.Id,
StartDate = DateTime.Parse("2017-10-22"),
EndDate = DateTime.Parse("2017-10-28"),
TimeOffType = "Annual",
Manager = user.Manager,
Status = "Appr"
};
response = await client.PostAsJsonAsync(url + "/newemployeeleave", newLeave);
if (response.IsSuccessStatusCode)
{
ViewBag.Added = "Added New Leave Successfully";
}
当客户端运行时,我得到一个空值被发送到addTimeOff方法。
该类在服务定义为
public class mmpTimeOff
{
[DataMember]
public int Id { get; set; }
[DataMember]
public System.DateTime StartDate { get; set; }
[DataMember]
public System.DateTime EndDate { get; set; }
[DataMember]
public string TimeOffType { get; set; }
[DataMember]
public int PersonId { get; set; }
[DataMember]
public string Status { get; set; }
[DataMember]
public Nullable<int> Manager { get; set; }
[DataMember]
public string Notes { get; set; }
}
,并绑定到客户机中作为连接的服务。
如何成功获取通过服务的对象数据。
感谢所有帮助。
里克
因为你正在使用'BodyStyle = WebMessageBodyStyle.Wrapped'你会发现这个答案有帮助,它解释了如何包装你的参数https://stackoverflow.com/a/12572821/920557。希望能帮助到你。 –