2013-11-25 2 views
16

Ich habe ein Web-API-Projekt, das einige Produktdaten zurückgibt. Je nach Accept-Header (JSON/XML) der Anfrage wird der Rückgabetyp korrekt ausgehandelt. Das Problem ist, wenn kein Accept-Header angegeben wird, gibt es JSON zurück, aber ich möchte, dass es standardmäßig XML zurückgibt. Wie ändere ich die Standardwerte für die Aushandlung von Inhalten in Global.asax?Wie Standard ASP.NET MVC Web API-Medienformatierer ändern?

Antwort

29

eine Lösung über http://www.strathweb.com/2013/06/supporting-only-json-in-asp-net-web-api-the-right-way/ gefunden

hat dieses Bild in WebApiConfig.Register():

config.Formatters.Clear(); 
config.Formatters.Add(new XmlMediaTypeFormatter()); 
config.Formatters.Add(new JsonMediaTypeFormatter()); 
config.Formatters.Add(new FormUrlEncodedMediaTypeFormatter()); 

So Standard-XML ist der erste Formatierer, aber die API unterstützt noch JSON, wenn die Anforderung danach fragt.

+1

Fügen Sie auch 'FormUrlEncodedMediaTypeFormatter' in Ihrem obigen Code als Standard Web API hat diese Formatierung auch in der Sammlung –

+0

was das ** FormUrlEncodedMediaTypeFormatter ** tut? Ich sehe, das gibt nichts zurück! –

+0

@Sunny sollte URL-formatierte Werte (http://msdn.microsoft.com/en-us/library/system.net.http.formatting.formurlencodedmediatypeformatter(v=vs.118).aspx) wie 'myVariable = 1 & myOtherVariable zurückgeben = testen' – Edgar

Verwandte Themen