你是非常正確的軌道上。但是你需要在配置屬性中初始化一個新的XmlMediaTypeFormatter
實例,否則你將影響全局引用。
如您所知,您需要基於IControllerConfiguration
接口創建2個屬性。
public class Controller1ConfigAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings,
HttpControllerDescriptor controllerDescriptor)
{
var xmlFormater = new XmlMediaTypeFormatter {UseXmlSerializer = true};
controllerSettings.Formatters.Clear();
controllerSettings.Formatters.Add(xmlFormater);
}
}
public class Controller2ConfigAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings,
HttpControllerDescriptor controllerDescriptor)
{
var xmlFormater = new XmlMediaTypeFormatter();
controllerSettings.Formatters.Clear();
controllerSettings.Formatters.Add(xmlFormater);
}
}
然後與相關的屬性
[Controller1ConfigAttribute]
public class Controller1Controller : ApiController
{
[Controller2ConfigAttribute]
public class Controller2Controller : ApiController
{
我想你的解決方案,但該格式是由控制器共享裝飾你的控制器。我可以收到兩個併發請求,每個控制器一個,產生UseXmlSerializer值不一致的問題。 – user1824269