Ich habe eine .net-Website, die auf einem Webserver mit IIS 6.0 auf Win2k3-Server befindet. Dies umfasst ein virtuelles Verzeichnis, das über einen UNC-Namen auf einen Dateiserver verweist. Das "Verbinden als" ist so eingestellt, dass es ein Dienstkonto in unserer AD-Domäne verwendet, das Zugriff auf die Webanwendung hat und in den Dateiserverordner schreiben und ändern kann. Ich verwende derzeit das Aliasing mit dem Dienstkonto und habe die entsprechenden Berechtigungen für den Ordner Miscrosoft.net Temp-Dateien auf dem Webserver festgelegt. Ich kann kein Schreibverzeichnis erstellen oder eine Datei speichern. Jede Information wird geschätzt.FileUpload.net Steuern und Speichern von Dateien in virtuellen Ordner auf Remote-Dateiserver
Antwort
Erstens, "Connect als" Passwörter werden nicht für immer im Speicher zwischengespeichert (Neustart) und Sie müssen daher leider aus diesem Grund Alternative zu dieser Verbindungsmethode suchen.
Zweitens hat das ASP.NET-Benutzerkonto "IUSR_IIS Machine Name" Zugriff auf das Zielverzeichnis, in das Sie schreiben? Ich nehme an, nein, weil es kein bekannter Benutzer auf dem Remote-Server sein wird. Dies bedeutet, dass dem speziellen Benutzer/Objekt "Jeder" Zugriff gewährt werden muss (in Ihrem speziellen Szenario).
Eine Alternative wäre die Verbindung mit einem Benutzer, der beiden Hosts bekannt ist.
Ich habe das jetzt funktioniert. Damit dies ordnungsgemäß funktioniert, benötigen Sie: 1. Ein Dienstkonto mit einem nicht abgelaufenen Kennwort in Ihrer Domäne, auf das der Webserver und der Dateiserver zugreifen können. 2. Sie erstellen den entsprechenden virtuellen Ordner mit dem Befehl "connect as". Legen Sie das Dienstkonto mit dem entsprechenden Kennwort fest 3. Sie müssen dem Dienstkonto für das .NET-Microsoft.NET \ Framework \ v2.0.50727 \ Temporäre ASP.NET-Dateien-Verzeichnis auf dem Server Schreibberechtigungen erteilen 4. Der Dienst account muss den Lese-/Schreib-/Änderungszugriff auf den Dateiordner erhalten 5. Der "Speichern unter" muss der vollständige UNC-Name des Dateiservers sein. Verwenden Sie nicht den Pfad server.map, sondern den vollständigen Namen des Ordners wie: \ myserver \ sharename \ directory \ + filename. Ich speichere meine in der web.config als Schlüssel/Wert-Paar.
Das fasst es zusammen.
Code-Snippet:
versuchen { if (uploadDoc.FileName = ""!) {
if (!Directory.Exists(MyFilePath))
Directory.CreateDirectory(ServerFilePath);
if (!File.Exists(Server.MapPath(ServerFileName)))
{
uploadDoc.PostedFile.SaveAs(SaveLocation);
}
Ich habe ein Dienstkonto eingerichtet, dass in unserer AD-Domäne ist. Ich habe dieses Dienstkonto in der web.config mit einem Identitätseintrag sowie einer Verbindung als (das zum Anzeigen von Dateien im virtuellen Ordner funktioniert) eingerichtet, hilft aber nicht beim Schreiben. Von einigen Artikeln, die ich in der .net gefunden habe, habe ich eine zusätzliche Änderung in den .nettempfile-Ordner auf dem Webserver hinzugefügt, der erforderlich ist, damit diese Dateien zwischengespeichert werden können. Ich denke, ein Teil des Problems ist der UNC-Name und wie die Identität weitergegeben wird. Ich werde das Code-Snippet in einem separaten Kommentar anhängen. –
Ich füge ein Code-Snippet an: aus dem default.aspx: Zeichenfolge SaveLocation = Server.MapPath ("/") + "ServerInspectionFilePath" + "\\" + ClientFileName; von web.config: Ich denke, die Syntax/Format für den Pfad ist aus. Ich kann gezwungen werden, auf dem Webserver remote zu debuggen. –