在ASP.Net Web API,如何更改特定控制器或操作的默认格式化程序



我们有一个正在运行的Web API站点,它将被用于多种目的:

  1. 在开发客户端,例如我们构建的iPhone应用程序,将主要使用JSON。
  2. 普通用户通过RSS客户端,将其添加到他们喜欢的RSS阅读器(如Flipboard)。

我基于这个链接创建了一个自定义RSS 2.0,并在WebApiConfig

中配置它
public static void Register(HttpConfiguration config)
{
    config.Formatters.Add(new SyndicationMediaTypeFormatter());

它同时接受application/rss+xml和application/atom+xml的accept标头。

用户通常在不知道报头的情况下将RSS提要粘贴到他们的RSS客户端中——所以我需要一些默认为RSS的路由。

然而,这是棕地开发,json提要已经在使用,目前作为默认格式,我不能改变整个网站的默认格式,而不影响现有的开发人员客户端。

是否可以将其设置为特定控制器的默认格式化器,而不是整个站点的默认格式化器?

您可以使用IControllerConfiguration来定义每个控制器的特定配置。

这是一个描述该场景的示例。您可以在这里快速查看如何使用这个接口(来自示例)。

一个自定义配置的例子是:

public class CustomControllerConfigAttribute : Attribute, IControllerConfiguration
{
    public void Initialize(HttpControllerSettings controllerSettings, 
                           HttpControllerDescriptor controllerDescriptor)
    {
        // Register an additional plain text media type formatter
        controllerSettings.Formatters.Add(new PlainTextBufferedFormatter());
    }
}

PlainTextBufferedFormatter的源代码,如果你好奇的话。

相关内容

最新更新