Laden...

Problem mit WebDAV und Windows Explorer

Erstellt von T-Man vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.003 Views
T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 18 Jahren
Problem mit WebDAV und Windows Explorer

Mein Programm unterstützt WebDAV.
Ich kann mit dem Windows Explorer durch die Verzeichnisse (Collections) wandern, Dateien löschen etc.

Info: Ich arbeite asynchron (mit BeginAccept/EndAccept & BeginReceive/EndReceive).

Wenn ich nun eine neue Datei reinkopiere, habe ich folgendes Problem:

Der Explorer schickt mir zunächst einen HEAD Befehl, den ich korrekt beantworte. Dann schickt er einen PUT-Befehl.
Von dem bekomme ich leider nur das erste Paket (mit dem Header). Aus dem lese ich das Attribut "Content-Length" aus und weiß dann, daß da noch mehr Daten kommen müßten, als ich bisher bekommen habe. Deshalb rufe ich wieder BeginReceive auf. Jetzt müßte eigentlich meine ReadCallback-Methode wieder aufgerufen werden, sodaß ich weiter empfangen kann. Genau das passiert aber nicht. Es sieht so aus, als hätte der Windows Explorer nichts weiteres gesendet. Das kann aber nicht sein, denn das wäre ein fataler Bug...

Seltsam ist, das es mit Word funktioniert. Wenn ich mit Word eine neue Datei erzeuge und diese dann in meinem WebDAV-Ordner speichere, klappt es. Es kommt nach einem PROPFIND und einem LOCK (wie es sein soll) ein PUT Befehl. In dem ersten Paket ist zunächst nur der Header enthalten (genau wie beim Explorer). Ich erkenne anhand der "Content-Length", das da noch mehr kommen müßte, rufe BeginReceive auf... Und siehe da: die ReadCallback-Methode wird erneut aufgerufen und ich kann den Rest empfangen...

Hat jemand Idee? Wieso klappt es mit Word, nicht aber mit dem Explorer???
Braucht der Explorer eine Sonderbehandlung? Wie könnte die aussehen? Muß ich schon nach dem Empfang des Headers einen Response schicken? Und was müßte da dann drinn stehen? Im Response soll ja stehen, ob der PUT Erfolgreich war. Das weiß ich doch aber zu dem Zeitpunkt noch gar nicht...

Ich bin langsam am verzweifeln...

Gruß,
T-Man