gpt4 book ai didi

asp.net - MVC 4 中集合和单个值之间的内容协商差异?

转载 作者:行者123 更新时间:2023-12-04 05:54:30 25 4
gpt4 key购买 nike

我正在利用新的 MVC4 ApiController 来构建搜索界面;像这样的东西:

public IEnumerable<RecordSummaryType> Get( ... )
{
var list = MyService.GiveMeTheList( ... );
return list;
}

public SingleRecordDetailType Get(long id)
{
var result = MyService.GiveMeASingleValue(id);
return result;
}

出于某种原因,在这种情况下,IEnumerable 调用尊重内容协商 - 即,当我在请求接受 header 中传递 application/xml 时,它返回 XML,而当我传递 application/json 时,它返回 JSON - 但是 SingleRecordType 调用仅返回 JSON,即使您要求 XML。

所以我的问题是 - MVC 4 处理单值类型的集合的方式有什么不同吗? 或者,更有可能是 MVC 中是否存在可以无意中禁用某些调用的内容协商的钩子(Hook)?

最佳答案

这取决于 SingleRecordDetailType 是否可以被 XmlSerializer 序列化。 XmlSerializer 是 ASP.NET Web API 中的默认 XML 格式化程序,请阅读 here了解更多关于它的局限性。

如果 Web API 无法使用请求的格式化程序序列化响应,它将使用列表中能够序列化响应的第一个格式化程序(大多数情况下这是 JSON 格式化程序)。

作为一种解决方案,您可以将 yoru 类修改为可通过 XmlSerializer 进行序列化,或者通过将 UseDataContractSerialzier 属性设置为 true 来重新配置 XML 格式化程序以使用数据协定序列化程序。

关于asp.net - MVC 4 中集合和单个值之间的内容协商差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9686876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com