2013-07-22 11 views
7

'u korurken bazı web api denetleyicilerinde güç harcar. Azure mağaza entegrasyonu yapıyoruz ve kaynak sağlayıcı kodu, xml'yi dönüş biçimlendiricisi olarak kullanmamızı gerektiriyor. Ancak sadece XML'i Azure malzeme ile kullanmak ve varsayılan JSON biçimlendiricisini yalnız bırakmak istiyoruz.xml, bazı JSA

Peki, herkes, uygulama başlangıcındaki genel biçimlendiricilerle uğraşmadan xml'yi her zaman döndürmek için belirli denetleyiciler/yöntemler için web api'yi nasıl zorlayabileceğinizi biliyor mu?

MVC 4.5 ve kod tabanlı olarak büyük ölçüde https://github.com/MetricsHub/AzureStoreRP ile çalışma, web api öğelerini kendi hizmetlerimize taşıdım ve arka katmamızı sahip olduğu varlık çerçeve arka yüzüne karşı kullanmak için veri katmanını değiştirdim. Her zaman belirli bir eylem gelen Xml geri göndermek isterseniz

cevap

16

, yalnızca takip yapabilirsiniz:

public HttpResponseMessage GetCustomer(int id) 
{ 
    Customer customer = new Customer() { Id =1, Name = "Michael" }; 

    //forcing to send back response in Xml format 
    HttpResponseMessage resp = Request.CreateResponse<Customer>(HttpStatusCode.OK, value: customer, 
     formatter: Configuration.Formatters.XmlFormatter); 

    return resp; 
} 

Belirli denetleyicileri yalnızca belirli biçemleyicileri sahip olabilir. Bu Per-Controller Configuration adı verilen bir özellik sağlanabilir:

[MyControllerConfig] 
public class ValuesController : ApiController 

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] 
public class MyControllerConfigAttribute : Attribute, IControllerConfiguration 
{ 
    public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor) 
    { 
     // yes, this instance is from the global formatters 
     XmlMediaTypeFormatter globalXmlFormatterInstance = controllerSettings.Formatters.XmlFormatter; 

     controllerSettings.Formatters.Clear(); 

     // NOTE: do not make any changes to this formatter instance as it reference to the instance from the global formatters. 
     // if you need custom settings for a particular controller(s), then create a new instance of Xml formatter and change its settings. 
     controllerSettings.Formatters.Add(globalXmlFormatterInstance); 
    } 
} 
+0

İkinci örnek aradığım şeydir. Bu harika teşekkürler! – danatcofo

+0

Bu benim aradığım şey. Teşekkürler Kiran !!!! –