Neue Version von System.Net.FtpWebRequest?

27/02/2009 - 16:02 von Christoph Schneegans | Report spam
Hallo allerseits!

In einer Anwendung verwende ich die Klassen System.Net.FtpWebRequest
und System.Net.FtpWebResponse. Bei Tests sind gleich an zwei Stellen
sporadisch Fehler aufgetreten, die ich mir nicht erklàren kann:

1. Ausnahme bei FtpWebRequestStream mit Meldung "The underlying
connection was closed: The server committed a protocol violation."

2. Ausnahme bei FtpWebResponse.Close mit Meldung "The underlying
connection was closed: An unexpected error occured on a receive."

Recherchen haben gezeigt, daß ich mit diesen Problemen nicht alleine
dastehe. Einige Entwickler scheinen diese Klassen zu meiden wie der
Teufel das Weihwasser. Es gibt sicherlich einige Alternativen, etwa
FTP-Implementierungen von Drittanbietern oder ein Umstieg auf WebDAV.
Ich möchte aber zunàchst überprüfen, ob Microsoft an seiner
Implementierung selbst vielleicht ein paar Bugs behoben hat.

Ich verwende in der Firma noch Visual Studio 2005 und habe
entsprechend .NET-2.0-Assemblies verwendet, ohne mir großartig
Gedanken um die Versiosnummer zu machen. Jetzt habe ich testweise
das .NET Framework 3.5 installiert. Tatsàchlich konnte ich in Visual
Studio 2005 nun etwa die Assembly System.Net.dll in der 3.5.0.0
referenzieren. Die Klassen FtpWebRequest und FtpWebResponse sind aber
gar nicht in dieser Assembly definiert. Bedeutet das sicher, daß es
von diesen Klassen keine neueren Implementierungen gibt als die im
Framework 2.0?

<http://schneegans.de/web/kanonische-adressen/> · Gute URLs
 

Lesen sie die antworten

#1 Frank Dzaebel
27/02/2009 - 18:08 | Warnen spam
Hallo Christoph,

In einer Anwendung verwende ich die Klassen System.Net.FtpWebRequest
und System.Net.FtpWebResponse. Bei Tests sind gleich an zwei Stellen
sporadisch Fehler aufgetreten, die ich mir nicht erklàren kann:

1. Ausnahme bei FtpWebRequestStream mit Meldung "The underlying
connection was closed: The server committed a protocol violation."

2. Ausnahme bei FtpWebResponse.Close mit Meldung "The underlying
connection was closed: An unexpected error occured on a receive."



Also ich benutze die Klassen öfters und habe selbst mit
asynchronen Varianten keine Probleme und auch nicht in den NGs
(wenn alles korrekt implementiert war) von wirklichen "Fehlern" gehört.
Das irgendjemand mal damit nicht zurecht kommt - ja klar - kommt vor.
Allerdings hat der Wrapper nicht den vollen FTP-Befehls-Vorrat,
deswegen nehmen Leute ggf. andere Dinge, wenn sie
sehr explizit auf interne Status-Codes etc. eingehen wollen/müssen.
In überwiegenden Anteil der Fàlle reichen aber IMHO die Klassen.




Recherchen haben gezeigt, daß ich mit diesen Problemen nicht alleine
dastehe. Einige Entwickler scheinen diese Klassen zu meiden wie der
Teufel das Weihwasser.



Das Problem ist, dass die MSDN-Beispiele z.T. fehlerhaft
sind. Die müssen aber ggf. nur geringfügig angepasst werden:

[FTP Upload mit Byte-Anzeige]
http://dzaebel.net/FtpUpload.htm

Weiterhin gibt es u.a. Permission-Einschrànkungen, etc.:

[FtpWebRequest-Klasse (System.Net)]
http://msdn.microsoft.com/de-de/lib...quest.aspx




Ich verwende in der Firma noch Visual Studio 2005 und habe
entsprechend .NET-2.0-Assemblies verwendet, ohne mir großartig
Gedanken um die Versiosnummer zu machen. Jetzt habe ich testweise
das .NET Framework 3.5 installiert. Tatsàchlich konnte ich in Visual
Studio 2005 nun etwa die Assembly System.Net.dll in der 3.5.0.0
referenzieren. Die Klassen FtpWebRequest und FtpWebResponse sind aber
gar nicht in dieser Assembly definiert. Bedeutet das sicher, daß es
von diesen Klassen keine neueren Implementierungen gibt als die im
Framework 2.0?



FtpWebRequest ist und war immer in der "System.dll".
Was Du meinst ist der "Namespace": System.Net.
Namespaces sind aber nur "logische" Zuordnungen nicht
physikalische und man kann nicht auf DLL-Dateinamen schliessen.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen