在ASP.NET Web API中,我需要为单个方法强制XML输出,但为其他方法启用JSON格式化程序。我在该主题上看到的所有内容都建议从GlobalConfiguration中删除JSON格式化程序,如下所示:
// remove JSON formatter
var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.JsonFormatter);
这可以工作但禁用JSON输出应用程序。我需要能够为特定方法或控制器指定格式化程序,而不会影响全局配置。这是可能的还是只能通过GlobalConfiguration完成?
答案 0 :(得分:1)
Microsoft为此特定目的引入了per-controller configuration。您 需要将您的功能分成不同的控制器,但希望这对您的特定目标来说不会太麻烦(甚至可能是一种改进)。
基本上,这就是你所做的:
[XMLControllerConfig]
public class XMLController: ApiController
{
[HttpGet]
public string SomeMethod(string someArgument)
{
return "abc";
}
}
...
class XMLControllerConfigAttribute: Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings,
HttpControllerDescriptor controllerDescriptor)
{
controllerSettings.Formatters.Clear();
controllerSettings.Formatters.Add(new XMLFormatter());
}
}