我想通过fiddler将xmldata发送到我的wepabi,但我的webapi由于某种原因无法获取数据。我想知道原因;)
我有什么:
[RoutePrefix("Document")]
public class DocumentController : ApiController
{
[HttpPost]
[Route("AddDocument")]
public IHttpActionResult AddDocument([FromBody] XmlDocument doc)
{
// Do Stuff
return Ok();
}
}
当我执行此请求时,doc
始终为null
。我做错了什么?
答案 0 :(得分:1)
为了使用内容协商,您需要接受模型绑定器可以在控制器中绑定的类。像这样:
public class Document
{
public int Id { get; set; }
public string BaseUrl { get; set; }
public string Name { get; set; }
public int Active { get; set; }
public Page[] Pages { get; set; }
}
public class Page
{
public int Id { get; set; }
public string Url { get; set; }
public string InternalId { get; set; }
public string Name { get; set; }
public bool Active { get; set; }
}
然后你接受这个作为你的论据,而不是XmlDocument
:
[RoutePrefix("Document")]
public class DocumentController : ApiController
{
[HttpPost]
[Route("AddDocument")]
public IHttpActionResult AddDocument([FromBody] Document doc)
{
// Do Stuff
return Ok();
}
}
现在,您可以将请求中的Content-Type
标题更改为application/xml
,text/xml
或application/json
,具体取决于发布的格式。