Comment retourner la page html d'une action WebApi?

je cherche un exemple de WebApi où la route par défaut retournera une page html donnée à l'appelant. J'ai la route et l'action comme suit. J'ai juste envie de lui envoyer de l'index.page html, pas de redirection, parce qu'il est au bon endroit.

http://localhost/Site      // load index.html

// WebApiConfig.cs
config.Routes.MapHttpRoute(
    name: "Root",
    routeTemplate: "",
    defaults: new { controller = "Request", action = "Index" }
);

// RequestControlller.cs
    [HttpGet]
[ActionName("Index")]
public HttpResponseMessage Index()
{
    return Request.CreateResponse(HttpStatusCode.OK, "serve up index.html");
}
<!-Si je me trompe, Quelle est la meilleure approche et pouvez-vous me donner un exemple?

WebApi 2 avec .NET 4.52

Edit: Hmm, de l'améliorer, mais l'obtention de json-tête en arrière au lieu de la page contenu.

public HttpResponseMessage Index()
{
    var path = HttpContext.Current.Server.MapPath("~/index.html");
    var content = new StringContent(File.ReadAllText(path), Encoding.UTF8, "text/html");
    return Request.CreateResponse(HttpStatusCode.OK, content);
}

{"Headers":[{"Key":"Content-Type","Value":["text/html; charset=utf-8"]}]}
19
demandé sur disassemble-number-5 2016-06-29 19:29:02

2 réponses

une façon de faire ceci est de lire la page comme une chaîne de caractères et ensuite de l'envoyer dans une réponse de type contenu "text/html".

ajouter namespace IO:

using System.IO;

dans le contrôleur:

[HttpGet]
[ActionName("Index")]
public HttpResponseMessage Index()
{
    var path = "your path to index.html";
    var response = new HttpResponseMessage();
    response.Content =  new StringContent(File.ReadAllText(path));
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
    return response;
}
32
répondu Marcus Höglund 2016-09-29 12:17:34

si c'est un fichier html statique (ce à quoi il ressemble), utilisez simplement les options de ressources statiques. https://docs.asp.net/en/latest/fundamentals/static-files.html

1
répondu Vivek 2016-06-29 16:49:43