Geben Sie "application / xml" anstelle von "text / plain" zurück. ASP.NET Core Web API

8

Ich habe eine Zeichenfolge, die XML ist, und ich muss es als XML-Dokument zurückgeben. Standardmäßig wird dies mit dem Inhaltstyp text/plain zurückgegeben. Der Inhalt wird gerendert, aber der Inhaltstyp muss application/xml sein. Ich habe die Option RespectBrowserAcceptHeader aktiviert, die Objekte als XML serialisiert und den korrekten Inhaltstyp festlegt, außer wenn das Objekt eine Zeichenfolge ist.

%Vor%     
Daric 17.04.2016, 21:06
quelle

2 Antworten

10

Sie könnten return Content(xmlString, "application/xml") machen, aber das ist wahrscheinlich nicht der beste Weg, es zu tun, es sei denn, sie werden auf diese Weise im Dateisystem oder in der Datenbank gespeichert.

Normalerweise möchten Sie stark typisierte Klassen haben, die Sie von Ihren Aktionen zurückgeben und sie als xml serialisieren lassen.

Sie können Ihren Aktionen auch mitteilen, dass sie den Inhalt basierend auf dem accept-Header zurückgeben (d. h. entweder json oder xml), aber für xml müssen Sie zuerst die xml serializers registrieren.

%Vor%

und kommentieren Sie Ihre Aktionen

%Vor%

Wenn der Client Accept: application/xml sendet, gibt er xml zurück und wenn der Client Accept: application/json sendet, gibt er json zurück.

    
Tseng 17.04.2016, 21:48
quelle
12

Kurze Antwort

Wenn Sie eine XML-Zeichenfolge haben und diese als XML-Dokument zurückgeben müssen, geben Sie ContentResult .

%Vor%

Vollständiges Beispiel

Controller

%Vor%

Startup

%Vor%

project.json

%Vor%

Antwort

%Vor%

Hier ist es auf GitHub für ein gutes Maß. :)

    
Shaun Luttin 17.04.2016 22:04
quelle