Ich muss eine Antwort von einem ASP.NET-Web-API-Controller im Klartext zurückerhalten.
Ich habe versucht, eine Anfrage mit zu machen, Accept: text/plain
aber es scheint nicht den Trick zu tun. Außerdem ist die Anfrage extern und außerhalb meiner Kontrolle. Was ich erreichen würde, ist die alte ASP.NET-Methode nachzuahmen:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
Irgendwelche Ideen?
BEARBEITEN, Lösung : Basierend auf Aliostads Antwort habe ich den WebAPIContrib- Textformatierer hinzugefügt und ihn im Application_Start initialisiert:
config.Formatters.Add(new PlainTextFormatter());
und mein Controller endete so etwas wie:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
quelle
Wenn Sie nur nach einem einfachen Nur / Text-Formatierer suchen, ohne zusätzliche Abhängigkeiten hinzuzufügen, sollte dies den Trick tun.
Vergessen Sie nicht, es Ihrer globalen Web-API-Konfiguration hinzuzufügen.
Jetzt können Sie Zeichenfolgenobjekte an übergeben
quelle
HttpContext.Current
einer Haftung.httpResponseMessage.Headers
umtext/plain
in Ihrem Controller vorausgesetzt , Sie Klartextformatierungsprogramm registriert haben.quelle
Für den .net-Kern:
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/formatting
quelle
Wenn Accept: text / plain nicht funktioniert, gibt es keinen registrierten Formatierer für Text-Mime-Typen.
Sie können sicherstellen, dass für den angegebenen MIME-Typ keine Formatierer vorhanden sind, indem Sie eine Liste aller unterstützten Formatierer aus der Dienstkonfiguration abrufen.
Erstellen Sie einen sehr einfachen Medientyp-Formatierer, der Text-Mime-Typen unterstützt.
http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters
quelle
Eine Erweiterung wie die folgende kann die Anzahl der Zeilen reduzieren und Ihren Code verschönern:
Jetzt können Sie die definierte Erweiterung in Ihrem
Web API
:Durch das Weiterleiten sehen
{DOMAIN}/api/Home/Index
Sie den folgenden Klartext:quelle