C# 4.0 如何在Web Api中使用具有特定路由的特定媒体格式化程序

C# 4.0 如何在Web Api中使用具有特定路由的特定媒体格式化程序,c#-4.0,asp.net-web-api,C# 4.0,Asp.net Web Api,我有一个WebApi项目,其中的控制器返回JSONP。为此,我使用了一个JsonPMediaTypeFormatter类——我现在必须将这些控制器与第二个不使用自定义格式化程序的Web Api项目合并。如何交付特定路线的JSONP “api/ProductsController/{action}/{id}-返回JSONP “api/LookupController/{action}/{id}-无自定义格式化程序 public static void Register(HttpConfig

我有一个WebApi项目,其中的控制器返回JSONP。为此,我使用了一个JsonPMediaTypeFormatter类——我现在必须将这些控制器与第二个不使用自定义格式化程序的Web Api项目合并。如何交付特定路线的JSONP

“api/ProductsController/{action}/{id}-返回JSONP

“api/LookupController/{action}/{id}-无自定义格式化程序

    public static void Register(HttpConfiguration config)
    {
         config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

        config.Formatters.Insert(0, new JsonpMediaTypeFormatter());
     }

没有特定的每路由方式来拥有格式化程序,但是有一种
每控制器配置
,您可以使用它来拥有特定的格式化程序。例如,在您的场景中,您可以为某些控制器集使用一个公共基本控制器,并使用每个控制器配置属性装饰该基本控制器

用于创建每个控制器配置的Web API示例:

链接不再有效