J'ai besoin de récupérer une réponse en texte brut à partir d'un contrôleur API Web ASP.NET.
J'ai essayé de faire une demande avec Accept: text/plain
mais cela ne semble pas faire l'affaire. De plus, la demande est externe et hors de mon contrôle. Ce que je ferais, c'est imiter l'ancienne méthode ASP.NET:
context.Response.ContentType = "text/plain";
context.Response.Write("some text);
Des idées?
EDIT, solution : Sur la base de la réponse d'Aliostad, j'ai ajouté le formateur de texte WebAPIContrib , je l' ai initialisé dans le Application_Start:
config.Formatters.Add(new PlainTextFormatter());
et mon contrôleur a fini par quelque chose comme:
[HttpGet, HttpPost]
public HttpResponseMessage GetPlainText()
{
return ControllerContext.Request.CreateResponse(HttpStatusCode.OK, "Test data", "text/plain");
}
la source
Si vous recherchez simplement un formateur simple / texte sans ajouter de dépendances supplémentaires, cela devrait faire l'affaire.
N'oubliez pas de l'ajouter à votre configuration globale de l'API Web.
Vous pouvez maintenant passer des objets chaîne à
la source
Pour .net core:
https://docs.microsoft.com/en-us/aspnet/core/mvc/models/formatting
la source
HttpContext.Current
une responsabilité.httpResponseMessage.Headers
àtext/plain
votre contrôleur vous être inscrit formatter le texte brut.la source
Lorsque Accepter: text / plain ne fonctionne pas, alors il n'y a pas de formateur enregistré pour les types MIME de texte.
Vous pouvez vous assurer qu'il n'y a pas de formateurs pour le type mime spécifié en obtenant la liste de tous les formateurs pris en charge à partir de la configuration du service.
Créez un formateur de type de média très simple qui prend en charge les types de texte mime.
http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters
la source
Une extension comme celle-ci peut réduire le nombre de lignes et embellir votre code:
Vous pouvez maintenant utiliser l'extension définie dans votre
Web API
:En acheminant,
{DOMAIN}/api/Home/Index
vous pouvez voir le texte brut suivant:la source