将Xml数据发送到webapi apicontroller参数值null

时间:2015-11-27 09:09:36

标签: c# asp.net-web-api2

我想通过fiddler将xmldata发送到我的wepabi,但我的webapi由于某种原因无法获取数据。我想知道原因;)

我有什么:

[RoutePrefix("Document")]
public class DocumentController : ApiController
{
    [HttpPost]
    [Route("AddDocument")]
    public IHttpActionResult AddDocument([FromBody] XmlDocument doc)
    {
        //  Do Stuff
        return Ok();
    }
}

我的小提琴手看起来像什么 FiddlerRequest

当我执行此请求时,doc始终为null。我做错了什么?

1 个答案:

答案 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/xmltext/xmlapplication/json,具体取决于发布的格式。