Je cherche un exemple WebApi où la route par défaut retournera une page html donnée à l'appelant. J'ai l'itinéraire et l'action configurés comme suit. Je veux juste lui envoyer la page index.html, pas rediriger, car 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, amélioré, mais récupérer l'en-tête json au lieu du contenu de la page.
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"]}]}
Une façon de procéder consiste à lire la page sous forme de chaîne, puis à l'envoyer dans une réponse de type de contenu "text/html".
Ajouter l'espace de noms 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;
}
Pour ASP.NET Core (pas ASP.NET Standard), s'il s'agit d'un fichier html statique (à quoi il ressemble), utilisez les options de ressource statique: