So bringen Sie einen benutzerdefinierten WebDAV-Server mit dem MS Mini-Redirector zum Laufen

So bringen Sie einen benutzerdefinierten WebDAV-Server mit dem MS Mini-Redirector zum Laufen

Ich habe einen benutzerdefinierten WebDAV-Server geschrieben, der Benutzer aus einer Datenbank authentifiziert und ein virtuelles Dateisystem basierend auf Datensätzen aus einer Datenbank bereitstellt. Er funktioniert gut mit WebDAV-Clients von Drittanbietern, aber nicht mit dem in Windows integrierten Mini-Redirector, wenn ein Laufwerk dem HTTP-Speicherort zugeordnet wird.

Das Merkwürdigste ist, dass ich auf meinem Entwicklungs-PC, auf dem ich den Server geschrieben habe, problemlos eine Verbindung herstellen kann, jedoch JEDER andere Computer, der versucht, auf den Server zuzugreifen, mit dem Mini-Redirector keine Verbindung herstellen kann.

Ich habe Fiddler verwendet, um den Netzwerkverkehr zu analysieren, und alles scheint in Ordnung zu sein. Wenn ich versuche, das Laufwerk zuzuordnen, wird ein OPTIONS-Header gesendet und meine Server antworten mit 200 OK. Dann sendet der Mini-Redirector eine PROPFIND-Methode mit einer Tiefe von 0. Mein Server antwortet mit 401 Unauthorized. Dies öffnet einen Anmeldedialog für Benutzer und Passwort. Nach Eingabe des Passworts wird eine neue PROPFIND-Anfrage gesendet, diesmal jedoch mit dem Autorisierungsheader. Alles scheint in Ordnung zu sein, mein Server akzeptiert die Anmeldeinformationen und antwortet mit einer 207-Multistatus-Antwort mit einem „HREF“ an das Stammverzeichnis. An diesem Punkt ruft der Mini-Redirector die Anmeldeaufforderung erneut auf und tut dies insgesamt dreimal, bevor die Verbindung mit einer Fehlermeldung fehlschlägt, dass der Server nicht gefunden werden kann. Das Seltsame ist, dass der Server gefunden WIRD, ich kann es in Fiddler sehen und der Server antwortet wie erwartet.

Jeder andere WebDAV-Client von Drittanbietern hat einen ähnlichen Austausch mit meinem Server, stellt eine Verbindung her und zeigt eine Verzeichnisliste an. Nur der Mini-Redirector schlägt fehl. Und wie ich oben erwähnt habe, funktioniert es auf meinem Entwicklungscomputer mit dem Mini-Redirector einwandfrei (obwohl der IIS 7.5-Server, mit dem ich mich verbinde, nicht auf meinem Entwicklungscomputer ist). Jeder andere Computer kann keine Verbindung herstellen. Ich habe darauf geachtet, den Registry-Hack zu verwenden, um eine grundlegende Authentifizierung über eine nicht sichere HTTP-Site zu ermöglichen. Ich habe meinen Server sogar auf eine sichere HTTPS-Site mit einem SSL-Zertifikat verschoben, nur für den Fall, dass dies das Problem war, und es funktioniert immer noch nicht. Hat jemand eine Idee? Ich denke, es hat etwas mit meinem IIS 7.5-Setup auf dem Server zu tun oder mit einer Einstellung auf allen anderen Clientcomputern außer meinem Entwicklungscomputer, denn mein Code scheint in Ordnung zu sein, der Server scheint problemlos auf Mini-Redirector-Anfragen zu reagieren, er ordnet das Laufwerk nur nach der 207-Multistatus-Antwort nicht zu, wie er es bei allen anderen Clients tut.

Für jede Hilfe wäre ich sehr dankbar. Frustrierend ist, dass ich davon ausgegangen war, dass der Mini-Redirector am schwierigsten zum Laufen zu bringen ist. Deshalb habe ich ihn zuerst auf meinem Entwicklungscomputer zum Laufen gebracht, bevor ich ihn mit allen anderen Clients getestet habe. Ich dachte also, ich wäre gut aufgestellt, bis ich versuchte, mich mit anderen Computern zu verbinden und sah, dass es fehlschlug, aber nur mit dem Mini-Redirector. Leider ist der Mini-Redirector für meine potenziellen Clients am einfachsten zu verwenden, daher ist es zwingend erforderlich, dass er mit dem Mini-Redirector funktioniert. Ich kann die Antworten/Anfragen von Fiddler bereitstellen, wenn das jemandem helfen würde, dies mit mir zu debuggen.

Antwort1

Microsoft WebDav Redirector hat einen bekannten Fehler, der Sie nicht dazu auffordert, einen Standard-XML-Namespace zu verwenden. Nachdem ich ein Namespace-Präfix hinzugefügt und alle meine XML-Elemente damit markiert hatte, war mein Problem behoben.

http://lists.w3.org/Archives/Public/public-html/2011Jan/0263.html

verwandte Informationen