我们正在运行一个Web API站点,它将用于多种用途:
我创建了一个基于this link的自定义RSS 2.0,并在WebApiConfig中配置了
public static void Register(HttpConfiguration config)
{
config.Formatters.Add(new SyndicationMediaTypeFormatter());
它接受application / rss + xml和application / atom + xml的接受头文件。
用户通常会将RSS源粘贴到他们的rss客户端,而不知道任何有关头的信息 - 所以我需要默认一些RSS路由。
但是,这是棕色地带开发,json供稿已经在使用中,目前作为默认设置,我无法在整个网站中更改默认格式化程序,而不会对现有开发人员客户产生负面影响。
我可以将其作为特定控制器的默认格式化程序,但不能作为整个站点的默认格式化程序吗?
答案 0 :(得分:9)
您可以使用IControllerConfiguration
来定义每个控制器的特定配置..
This是描述此方案的示例。您可以快速了解如何使用此接口here(来自示例)。
自定义配置的一个示例是:
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
的来源,如果您有点好奇。