2017-02-15 1 views
1

Ich benutze. Net WebApi, um verschiedene Endpunkte mit JSON-Daten verfügbar zu machen. Jetzt brauche ich, dass ein bestimmter Endpunkt HTML-Seiten zurückgibt. Ich habe es so umgesetzt.HTML-Seite mit Bildern mit. Net WebApi

[HttpGet] 
[Route("htmlPage/{htmlPageId}")] 
public HttpResponseMessage GetHtmlPage(string htmlPageId) { 
    string rawHtml = m_logic.GetHtmlPageById(htmlPageId); 
    HttpResponseMessage response = new HttpResponseMessage {Content = new StringContent(rawHtml)}; 
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); 
    return response; 
} 

Das Problem, mit dem ich konfrontiert bin, ist, wenn diese HTML-Seite einige Bilder haben. Ich weiß nicht, wie ich sie entlarven soll, weil ich jetzt einen Fehler 404 nicht gefunden bekomme, wenn ich meinen Endpunkt von meinem Browser aus anrufe. Ich habe einen Ordner in meinem Projekt mit diesen Bildern und einigen Javascript-Skripten, die ich zurückgeben muss.

Wie kann ich das tun?

EDIT: Dies ist Teil meiner HTML

<html lang=\"en\"> 
    <head> 
    <title> Simplest HTML </title> 
    <meta name=\"description\" content=\"The Html served\"> 
    <meta name=\"author\" content=\"acostela\"> 
    <script type="text/javascript" src="./public/scripts/my-api.js"></script> 
    </head> 
    <body> 
    <h1> The first Simplest html served!!</h1> 
    <img src="./public/img/success.jpg"/></br></br> 
    </body> 
</html> 

Meine Ordnerstruktur ist die folgende

-->Html 
    | 
    | 
     ---> myFirstHtml.html 
    | 
    | 
     ---> public 
      | 
      | 
      ---> img 
      | | 
      | | 
      | ---> success.jpg 
      | 
      | 
      ---> scripts 
       | 
       | 
       ---> my-api.js 
+0

Verwenden Sie nicht ./ aber ~ wie Sie in meinem Beispiel sehen können – Ygalbel

+0

@Ygbel ich habe Ihre Lösung versucht, aber ich bekomme den gleichen Fehler. GET http: // localhost: 8888/Endpunkt/~ img/success.jpg 404 (nicht gefunden) – acostela

+0

Mit Ihrer Struktur sollte es localhost sein: 8888/public/img/sucess.jpg – Ygalbel

Antwort

0

Schließlich löste ich es. Ich fügte eine statische Dateiserver-Middleware mit owin + katana hinzu.

ich meine Startklasse geändert diese nun automatisch alle Bilder Skripte und Dateien

public void Configuration(IAppBuilder application) 
    { 
     //Other webApi configuration 
      application.UseFileServer(new FileServerOptions() 
      { 
       RequestPath = new PathString("/html/public"), 
       FileSystem = new PhysicalFileSystem(@"../../../MyProject/html/public"), 
      }); 

verwenden, die öffentlich sind bedient werden, wenn meine HTML-Seite über meine WebAPI angefordert wird.

Was bedeutet dieser Code, um meine http-Anfragen "/ html/public" in meinen realen Dateisystempfad zu übersetzen, der in PhysicalFileSystem angegeben ist.

Hoffen Sie, dass dies jedem hilft.

0

WebAPI statische Datei dienen kann.

Sie müssen nur den richtigen Link in Ihrer HTML-Datei einstellen.

Zum Beispiel:

enter image description here

Ihre <img> wird so aussehen:

<img src="~/Content/img/email-icon.png" />

+0

Das funktioniert nicht. Ich bekomme denselben Fehler. GET 404 (nicht gefunden) – acostela

+0

Welche URL versuchen Sie zu erreichen? Können Sie einen Teil des HTML-Codes teilen? – Ygalbel

+0

Ich habe meine Frage aktualisiert. Vielen Dank! :) – acostela