Laden Sie große Dateien von der ASP.Net-Anwendung hoch

8

Ich baue eine Website, wo ich eine Seite brauche, auf der Benutzer große Videodateien hochladen kann, ich habe den WCF-Dienst mit Streaming erstellt, aber ich rufe diesen WCF-Dienst vom Button_Click-Ereignis der Webseite an.

Ich habe unten erwähnten Artikel für die Erstellung von WCF-Diensten verwendet

WCF-Streaming

Ich habe Streaming verwendet, da es effizient sein sollte und nicht im Speicher des Servers gepuffert werden sollte.

Jetzt Fragen

1) Ich habe Zweifel, dass die gesamte Datei auf den Webserver hochgeladen wird und dann auf den WCF-Dienstserver übertragen wird ... wenn das der Fall ist, bekomme ich keinen Vorteil von Streaming sowie IIS und Webserver wird sehr bald ausfallen, wenn der Benutzer eine große Datei hochlädt oder wenn mehrere Benutzer Dateien hochladen, die derzeit hochgeladen werden

2) Gibt es einen anderen effizienten Weg, dieselbe Operation mit einer anderen Technik durchzuführen?

Bitte helfen Sie mir ...

BEARBEITEN:

Wenn ich die WCF-Service-Methode nicht von ASP.Net-Code aus aufrufen, dann werden auch Bytes auf den Webserver übertragen, die ich mit HTTPFox

überprüft habe

Ich habe obige Sache mit der Upload-Kontrolle überprüft und eine Schaltfläche auf die UI gesetzt, deren Klick-Ereignis an eine Methode im Code gebunden ist.

Also, ich habe immer noch Verwirrung darüber, wie Daten übertragen werden

  1. Clientcomputer - Webserver (ASP.Net-Anwendung) - Dienstserver (WCF-Dienst)
  2. Clientcomputer - Dienstserver (WCF-Dienst)

HINWEIS: Wenn ich einen Debug-Punkt auf button_click setze und eine 10-kb-Datei hochlade, trifft das in weniger als 1 sek. aber wenn ich 50 mb Datei hochlade dann dauert es Zeit.

Ich habe den Code des aufrufenden WCF-Dienstes innerhalb dieses button_click-Ereignisses platziert

    
Radhi 15.02.2010, 17:31
quelle

2 Antworten

5
  

1) Ich habe Zweifel, dass das Ganze   Datei wird auf den Webserver hochgeladen und   Anschließend wird es an WCF Service übertragen   Server ... wenn das stimmt, dann bin ich es nicht   Vorteile des Streaming auch bekommen   da iis und der Webserver nicht erreichbar sind   Sehr bald, wenn der Benutzer eine große Datei hochlädt   oder mehrere Benutzer laden Dateien hoch   con derzeit

Nein, du verwirrst Sachen hier. Wenn Sie WCF-Streaming zum Hochladen einer großen Datei verwenden, wird die Datei in Blöcken von mehreren KByte Größe gesendet. Der WCF-Server - der in IIS ausgeführt oder in einem NT-Dienst oder einer Konsolenanwendung selbst gehostet wird - empfängt diese Blöcke und schreibt sie auf die Festplatte, sobald sie ankommen.

Sie laden nicht die gesamte Datei auf den Webserver und übertragen sie dann an den WCF-Dienst - der WCF-Dienst selbst empfängt und verarbeitet die Datei - und nur einmal.

Wenn Sie Ihren WCF-Dienst selbst hosten - in einer Konsolenanwendung, einer Winforms-Anwendung oder einem Windows NT-Dienst -, ist überhaupt noch kein IIS oder Webserver beteiligt. WCF behandelt alles selbst.

WCF-Streaming ist wahrscheinlich eine der speicherfreundlichsten und eine der einfachsten Möglichkeiten, große Dateien auf einen Server zu übertragen.

Sehen Sie sich einige weitere Beispiele und Blogbeiträge zum Thema an:

marc_s 15.02.2010, 22:15
quelle
2

Hier ist Ihre beste Lösung, ich ging den gleichen Weg wie Sie und schloss FTP ist einfacher und funktioniert einwandfrei. Hier ist ein Beispielcode:

Zuerst erhalten Sie diese Bibliothek, funktioniert einwandfrei:

Ссылка

%Vor%     
James Campbell 15.02.2010 17:39
quelle

Tags und Links