如何使用ASP.NET web mvc 6返回xml或json,具体取决于Accept Header

时间:2016-01-31 19:44:38

标签: asp.net-web-api asp.net-core-mvc

我使用ASP.NET mvc 6实现了一个web api控制器,我希望将控制器的结果作为json或xml返回,具体取决于客户端的Accept标头。例如,如果客户端发送带有“Accept:application / xml”的GET请求,则返回的响应应为xml。如果标题是“Accept:application / json”,那么它应该是json。此时控制器总是返回json。有没有办法配置这个?注意:这个问题确实是How to return XML from an ASP.NET 5 MVC 6 controller action的重复。但是那里提供的解决方案并没有解决我的问题。以下接受的答案对我有用。

下面给出了控制器,它是ASP.NET 5 web api模板提供的控制器:

[Route("api/[controller]")]
public class ValuesController : Controller
{
    // GET: api/values
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    [HttpGet("{id:int}")]
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
    [HttpPost]
    public void Post([FromBody]string value)
    {
    }

    // PUT api/values/5
    [HttpPut("{id}")]
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/values/5
    [HttpDelete("{id}")]
    public void Delete(int id)
    {
    }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

我为你做了研究,你可以一个人继续:

需要:

"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.Formatters.Xml": "6.0.0-rc1-final"

启动:

 services.Configure<MvcOptions>(options =>
 {
   options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
 });

here

继续

another

and antoher