2015-12-15 5 views
5

Ich habe eine HTML-Seite, die eine FileOfRecords.txt hochlädt, die ein Element enthält, das zu einer Datenbank hinzugefügt werden soll (.NET/C# -Server). Laden Sie die Datei hoch.Wie kann ein .NET-Server Dateiverarbeitungsergebnisse an Clients jQuery übertragen?

Ich versuche, den Server einen Status zurück zum Client senden, während jede Zeile in der Datei verarbeitet wird.

Die Controller-Methode wird durch jede Zeile durchlaufen, die Elemente zur Datenbank hinzufügt. Bei jeder Iteration möchte ich dem Client eine Nachricht mit einem Status senden, ob der Erfolg fehlgeschlagen ist. Kann mir jemand sagen, wie dies mit jQuery, AJAX und C# gemacht wird?

Leider habe ich keinen Code da ich absolut keine Ahnung habe wie ich anfangen soll.

+0

Also, was versuchst du zu tun? Laden Sie eine Datei auf den Server hoch oder versuchen Sie einen Status zu senden, während jede Zeile verarbeitet wird? Oder beides. Sie sollten die Datei wahrscheinlich nur mit einer Dateiauswahl senden. Dann den Status zurückgeben, während er verarbeitet wird, die Datei zu streamen und gleichzeitig zu verarbeiten, scheint ein bisschen bizarr, aber es kann getan werden. –

+0

auch, warum versuchst du das zu tun? –

+3

In normalen Situationen kann der Server keine Daten an den Client "pushen". Das ist eine Einschränkung des HTTP-Protokolls. Der Client kann wiederholt Daten anfordern, und der Server kann mit Daten antworten, wenn diese verfügbar sind. Das nennt man Polling. Wenn Sie dies oft genug tun, kann dies den Eindruck erwecken, dass der Server Daten an den Client sendet. Mit Technologien wie [web sockets] (https://en.wikipedia.org/wiki/WebSocket), die häufig in .NET mit [SignalR] (http://signalr.net/) implementiert sind, können Sie tatsächlich Daten pushen. . – mason

Antwort

-1

Wenn Ihr Browser Dateien sendet, werden diese komprimiert, um Bandbreite zu sparen, und einige Prüfsummen werden berechnet, um sicherzustellen, dass die Dateien "sicher" am Ziel ankommen. Dies bedeutet, dass der Server die Anfrage nur verarbeiten kann, wenn alle Daten übertragen wurden.

Sie können Ihren Dateiinhalt jedoch als Chunk (Zeile für Zeile oder N-Zeile für N-Zeile) an einen Webservice senden, damit der Server ihn schnell verarbeiten und auf Ihren Ajax-Handler reagieren kann. Abhängig von Ihrer Anwendung, etwa wenn der Inhalt Ihrer Datei als Ganzes von Bedeutung ist), müssen Sie möglicherweise eine Art Übertragungssitzungsstruktur erstellen, um die Browserübertragung und die Serverantwort synchron zu halten (um sicherzustellen, dass sie nicht durcheinander geraten).

+1

Die Komprimierung hat nichts damit zu tun, dass der Server die Daten nicht übertragen kann. Diese Beschränkung kommt tatsächlich vom HTTP-Protokoll selbst. – mason

+0

In der Tat. Ich habe nicht gesagt, dass es die Ursache des Problems ist, aber es ist einer der verständlichsten Gründe. –

+0

Erwähnen Kompression hier wird nur die Dinge verwirren. Es ist nicht der "verständlichste" Grund, nur ein Ablenkungsmanöver. – mason

Verwandte Themen