2017-12-21 2 views
1

zurückgegeben Ich habe eine TXT-Datei, die einige Daten enthält. Ich habe einige Codes, mit denen der Webbrowser die Daten in der TXT-Datei anzeigen kann. Ich möchte, dass die Daten im JSON-Format angezeigt werden.Daten in Datei nicht im Webbrowser angezeigt, wenn in JSON

Hier sind meine Codes

FileReaderClient.cs

public class FileReaderClient : IHttpActionResult 
{   
    public string filePath;  
    public FileReaderClient(string filePath) 
    { 
     this.filePath = filePath;   
    } 
    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) 
    { 
     return Task.Run(() => 
     { 
      var response = new HttpResponseMessage(HttpStatusCode.OK) 
      { 
       Content = new StreamContent(File.OpenRead(filePath)) 
      }; 

      return response; 
     }); 
    } 
} 

FileReaderController.cs

public IHttpActionResult Get() 
    { 
     var result = new FileReaderClient("C:\\Users\\attsuap1\\Desktop\\testfile.txt"); 
     return result; 
    } 

Wenn ich return result; lese ich die Daten in meiner txt-Datei angezeigt bekommen der Webbrowser. Wenn ich jedoch versuche, es im JSON-Format return Json(result); zurückgeben, bekomme ich das Ergebnis als {"filePath":"C:\\Users\\attsuap1\\Desktop\\testfile.txt"} anstelle der Daten in meiner TXT-Datei. Warum ist das so? Und was soll ich tun, um die Daten in der TXT-Datei im JSON-Format im Webbrowser anzuzeigen?

Jemand bitte helfen Sie mir und vielen Dank im Voraus.

+0

können Sie versuchen Sie es so, wie ich vorgeschlagen und lassen Sie mich für Sie gearbeitet wissen oder nicht –

Antwort

2

versuchen, wie unten Dateiinhalt zurück als Antwort

[HttpGet]//http get as it return file 
     public HttpResponseMessage GetTextFile() 
     { 
      //below code locate physcial file on server 
      var localFilePath = HttpContext.Current.Server.MapPath("~/timetable.txt"); 
      HttpResponseMessage response = null; 
      if (!File.Exists(localFilePath)) 
      { 
       //if file not found than return response as resource not present 
       response = Request.CreateResponse(HttpStatusCode.Gone); 
      } 
      else 
      { 
       string data = string.Join(" ", File.ReadAllLines(localFilePath)); 
       response = new HttpResponseMessage 
       { 
        StatusCode = HttpStatusCode.OK, 
        Content = new StringContent(data, Encoding.UTF8, "text/html") 
       }; 
      } 
      return response; 
     } 

Sie stehen vor Fehlern zu senden, weil Sie ..you Datei mit physischem Pfad zuzugreifen versuchen müssen mit Server.MapPath Funktion Datei zuzugreifen .. wie Sie mit Webpi oder Web-Anwendung arbeiten.

müssen Sie so tun, erstellen Sie Ordner in Ihrem WebAPI und legen Sie die Datei in diesem Ordner.

string pathToFiles = Server.MapPath("~/files/testfile.txt"); 

zum Beispiel Check hier: https://www.dotnetperls.com/mappath

+0

Ich habe die Dateien Ordner ist jedoch nicht in der Lösung Explorer erscheint, ist das in Ordnung ? Ich aktualisierte eine Million Male –

+0

@SushaNaidu - versuchen Sie, Detail zu senden, wie ich in Code –

+0

gegeben wurde Alle diese Codes gehen unter Steuerung oder FileReaderClient.cs? –

Verwandte Themen