我正在开发一个使用webapi控制器的应用程序。我只需要为 特定 控制器设置一些设置,而不是 所有 !我使用IControllerConfiguration并在initialize方法中设置 类型名称处理 设置。我希望此设置仅适用于具有该属性的一个控制器,但它适用于All,所有其他控制器也错误地使用此新设置!我需要在Schedulecontoller上应用自定义属性 ONLY 有没有解决方案,谢谢。
public class CustomJson245Attribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
controllerSettings.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling= TypeNameHandling.Auto;
// formatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
}
}
[CustomJson245]
public class ScheduleController : ApiController
{}
我不需要这个控制器的设置来改变!但它会随着ScheduleSetting而改变。
public class SimpleController : ApiController
{}
EDITED 我终于找到了答案,
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
controllerSettings.Formatters.Clear();
controllerSettings.Formatters.Add(new JsonMediaTypeFormatter() { SerializerSettings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto} });
}