在我的本地计算机上调试。我有fidder模拟对http post web api http://localhost:15147/api/Pacel/CreatePacel/
如果我将fidder“Composer” - “请求标题”设置为:
User-Agent: Fiddler
Accepted: application/json
Content-Type: application/json
Content-Length: 0
Host: localhost:15147
它确实有效,我确认它可以进入我的断点“if (pacel == null) // SET BREAKPOINT HERE
”
但如果我设置Content-Length: 1000
并在fidder“Composer”中添加“Request Body”:
{
"id": 3
"province":"US",
"city":"US"
}
它不会进入断点“if (pacel == null) // SET BREAKPOINT HERE
”
任何人都可以知道这是什么问题吗?
PacelContrller中的动作方法如下:
// POST api/values
[HttpPost]
[ActionName("CreatePacel")]
public HttpResponseMessage CreatePacel([FromBody]Pacel pacel)
{
try
{
if (pacel == null) // SET BREAKPOINT HERE
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "can not read object from body.");
}
else
{
int effectedRows = 0;
effectedRows = pr.Add(pacel);
if (effectedRows == 0)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "can not save to the db.");
}
else
{
return Request.CreateResponse(HttpStatusCode.Created, "created items in db success.");
}
}
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
}
}
Pacel模型如下:
public partial class Pacel
{
public long pacelId { get; set; }
public Nullable<System.DateTime> arrivedDate { get; set; }
public Nullable<System.DateTime> signDate { get; set; }
public string signname { get; set; }
public Nullable<long> customerId { get; set; }
public string province { get; set; }
public string city { get; set; }
public string district { get; set; }
public string campname { get; set; }
public string bldNumber { get; set; }
public string unitNumber { get; set; }
public string roomNumber { get; set; }
public string type { get; set; }
}
@Rafa回答后编辑
with body {“pacelId”:3“省”:“US”,“city”:“US”}并留下内容长度= 0;它可以很好地工作(意味着它可以进入断点)。但是对象不能在服务器端传递。在断点处,它显示pacel
为空
答案 0 :(得分:0)
我认为您发送的JSON不适合该模型,您可以尝试:
{ &#34; pacelId&#34;:3 &#34;省&#34;:&#34; US&#34 ;, &#34;城市&#34;:&#34;美国&#34; }
我首先会留下内容长度= 0或者说实际内容长度。
答案 1 :(得分:0)
您的请求正文格式不正确,您需要在第一个属性(id)之后添加逗号。我也会将“id”更改为pacelId以匹配您的起搏对象:
{
"pacelId": 3,
"province":"US",
"city":"US"
}
注意:您可以让Fiddler自动设置Content-Length:
作曲家&gt;选项选项卡,然后选中“修复内容长度标题”选项。