2016-06-29 43 views
14

Sto cercando un esempio WebApi in cui la route predefinita restituirà una determinata pagina html al chiamante. Ho impostato il percorso e l'azione come segue. Voglio solo mandargli la pagina index.html, non il reindirizzamento, perché è nel posto giusto.Come restituire la pagina html dall'azione WebApi?

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"); 
} 

Se I "m utilizzando questo torto, qual è l'approccio migliore e mi puoi indicare un esempio

WebAPI 2 con .NET 4.52

Edit:? Hmm, migliorato, ma ottenendo intestazione jSON indietro invece del contenuto della pagina.

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"]}]} 

risposta

25

Un modo per fare ciò è leggere la pagina come stringa e quindi inviarla in una risposta del tipo di contenuto "text/html".

Add namespace IO:

using System.IO; 

Nel controllore:

[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; 
} 
1

Se si tratta di un file HTML statico (che sembra), basta usare le opzioni di risorse statiche. https://docs.asp.net/en/latest/fundamentals/static-files.html

+4

Sembra che sia per Asp.Net Nucleo. Perdonami non sto capendo bene dove cambiare il codice WebApi per servire il file statico. Non ho un metodo Configure o WebHostBuilder. –

Problemi correlati