Frage

Ich versuche, Dateien auf einen Webserver mit System.Net.WebClient.UploadFile zu laden, aber ich halte eine WebException bekommen. Genauer gesagt, ich bin immer 3 Fehler. Ich habe keine Ahnung, warum ich nicht die gleichen Fehler, aber sie scheinen alle verwandt zu sein auf das, was ich online gefunden.

  • Die Anforderung wurde abgebrochen. Der Antrag wurde abgebrochen
  • Verbindung geschlossen. Versuchen Sie es erneut.
  • Eine vorhandene Verbindung wurde vom Remotehost geschlossen.

Es scheint etwas zufällig (nicht immer die gleiche Datei, die Menge an Zeit, oder irgendein anderes Muster, das ich herausfinden kann). Dies gilt auch nicht passieren, auf meiner Arbeit Netz (die Uploads in weniger als 2 Sekunden), aber von zu Hause aus über einen DSL (die Uploads dauern etwa 2 Minuten) geschieht.

Von dem, was ich online gefunden haben, haben diese Fehler etwas mit Keep-Alive zu tun. WebClient bietet keine Möglichkeit, diese zu deaktivieren (Ich bin nicht sicher, ob ich wollen würde sowieso, da dies ein Leistungsmerkmal ist) leider.

ich denke, es könnte etwas mit Timeouts zu tun hat, aber ich kann nicht herausfinden, warum. Der Server ist ASP.Net MVC und das Timeout ist auf eine Stunde eingestellt.

    <httpRuntime
        maxRequestLength="10024" 
        executionTimeout="3600"
        /><!-- 10024 = 10MB, 3600 = 1hr -->

Ich habe Interesse an den beiden Möglichkeiten, dieses Problem zu beheben, damit es nicht passiert und auch Recovery-Techniken (einfach den antrag wieder scheint nicht wirksam zu sein).

Einige Hintergrund, ist dies für eine WinForms-Anwendung, die Fotos auf den Server hochgeladen. Der Server ist eine ASP.Net MVC-Anwendung. Der Kunde hat richtig für eine lange Zeit gearbeitet, aber versagen jetzt, da ich es zu ASP.Net MVC geschaltet (es war die klassische ASP mit SA FileUp verwenden). Die Client-Seite nur geändert, um die neuen URLs zu empfangen, außer, dass es ist so ziemlich das gleiche.

War es hilfreich?

Lösung

Die Ausnahme „die Anforderung wurde abgebrochen: Die Anfrage wurde abgebrochen.“ Wenn die WebClient Timeout während einer Dateiübertragung geworfen. Wenn keine Dateiübertragung stattfindet, erhalten Sie statt „Der Vorgang hat timed out“.

Der Timeout auf dem Client auftritt. WebClient ermöglicht es Ihnen nicht das Timeout und die Standardeinstellungen für HttpWebRequest (was WebClient verwendet) ist 100 Sekunden. Ich glaube, ich muss herausfinden, wie die Fortschritte zu erhalten, wenn HttpWebRequest verwenden. Ich werde auch, warum ASP.Net File-Transfer, um herauszufinden, habe langsamer als die Verwendung von SAFileUp mit klassischen ASP.

UPDATE: Ich habe eine WebHelper Klasse erstellt, die an die Stelle der WebClient nimmt aber mehr Zugriff auf die notwendigen Funktionen des zugrunde liegenden WebRequest bietet. Es bietet auch eine Reihe von zusätzlichen Funktionen über den WebClient. Wenn Sie interessiert sind, ist es in der BizArk Projekt auf CodePlex.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top