我有一个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());
}
答案 0 :(得分:2)
没有专门的格式化程序的路由方式,但有一个per-controller configuration
可以用来拥有特定的格式化程序。例如,在您的方案中,您可以为某些控制器组配置一个公共基本控制器,并使用每个控制器的配置属性来装饰该基本控制器。
用于创建每个控制器配置的Web API示例: http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/ControllerSpecificConfigSample/ReadMe.txt