【问题标题】:How to return xml or json with ASP.NET web mvc 6 depending on Accept Header如何根据 Accept Header 使用 ASP.NET web mvc 6 返回 xml 或 json
【发布时间】:2016-01-31 19:44:38
【问题描述】:

我已经使用 ASP.NET mvc 6 实现了一个 web api 控制器,我想根据客户端的 Accept 标头将控制器的结果返回为 json 或 xml。例如,如果客户端发送带有“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)
    {
    }
}

感谢您的帮助!

【问题讨论】:

  • here 你可能会发现提示......这可能是重复的
  • @Prescott 是的,这可能是重复的。但是,我尝试按照您的链接中提供的步骤进行操作。当您同时针对核心和常规 .NET 4.6 框架时,这似乎不起作用。我需要两个平台的解决方案
  • 我收到以下错误 CS0012 类型“MvcOptions”在未引用的程序集中定义。您必须添加对程序集“Microsoft.AspNet.Mvc.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null”的引用。我尝试将 "Microsoft.AspNet.Mvc.Core" : "6.0.0-rc1-final" 添加到我的 project.json 中,但仍然出现此错误。哪个包定义了 MvcOptions?

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


【解决方案1】:

我为你做了研究,你可以单独继续:

需要:

"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

【讨论】:

    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2015-05-11
    • 2012-05-07
    相关资源
    最近更新 更多