在ASP.NET Web API中,我需要为一种方法强制使用XML输出,但要为其他方法启用JSON格式化程序。我在该主题上看到的所有内容都建议从GlobalConfiguration中删除JSON格式器,如下所示:
// remove JSON formatter
var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.JsonFormatter);
这可以工作,但是会禁用整个JSON输出应用程序。我需要能够为特定方法或控制器指定格式化程序,而又不影响全局配置。这是可能的还是只能通过GlobalConfiguration来完成?
Microsoft为此目的引入了每个控制器的配置。您将需要将功能划分为不同的控制器,但希望对于您的特定目标不会有太多麻烦(甚至可能会有所改进)。
基本上,这是您的工作:
[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());
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句