[c#] Zugriff auf Dateien von der Netzwerkfreigabe in der c # -Web-App


Answers

Ich hatte keine Probleme, mich mit Netzwerkfreigaben so zu verbinden, als wären es lokale Laufwerke. Das einzige Problem, das Sie haben können, ist das, was Sie erwähnt haben: Das aspnet Konto erhält Zugriff auf die Freigabe. Identitätswechsel ist wahrscheinlich der beste Weg, dies zu tun.

Sie sollten in der Lage sein, beliebige Filestream-Objekte zu verwenden, um auf die Netzwerkfreigabe zuzugreifen, solange sie einen Laufwerksbuchstaben auf dem Servercomputer hat.

Question

Ich habe eine Webanwendung, die Dateien von einer Netzwerkfreigabe lesen (und möglicherweise schreiben) muss. Ich frage mich, wie der beste Weg wäre, dies zu tun?

Ich kann dem Netzwerkdienst oder den aspnet-Konten keinen Zugriff auf die Netzwerkfreigabe gewähren. Ich könnte möglicherweise Identitätswechsel verwenden.

Die Netzwerkfreigabe und die Webanwendung werden beide in der gleichen Domäne gehostet und ich kann einen neuen Benutzer in der Domäne speziell für diesen Zweck erstellen. Ich bin mir jedoch nicht ganz sicher, wie ich die Punkte zwischen dem Erstellen des Filestreams und der zu verwendenden Anmeldeinformationen verknüpfe. in der Webanwendung.

Leider ist das Laufwerk nicht als Netzlaufwerk auf dem Rechner abgebildet, es steht mir nur als Netzwerkfreigabe zur Verfügung, so dass ich leider keinen transparenten Anruf tätigen kann.

Es gibt ein Problem, das ich mir mit dem Identitätswechsel vorstellen kann ... Ich kann nur einen Benutzer pro Anwendungsdomäne imitieren, denke ich , aber ich bin glücklich, korrigiert zu werden. Ich muss diese Datei möglicherweise auf mehrere verschiedene Freigaben schreiben, was bedeutet, dass ich möglicherweise mehrere Benutzer imitieren muss.

Ich mag die Idee, einen Token zu erstellen ... wenn ich das tun kann, werde ich die Verwendung im Voraus nach ihren Anmeldeinformationen fragen und dann die Sicherheit dynamisch anwenden und ihnen aussagekräftige Fehlermeldungen geben, wenn der Zugriff verweigert wird ... I Ich bin weg, um zu spielen, aber ich werde mit einem Update zurück sein.




Sie haben einige Optionen und einer von diesen ist der Identitätswechsel, wie Sie erwähnt haben. Ein anderer, den ich gerne benutze und in der Vergangenheit verwendet habe, ist ein Trusted Service Call. Nehmen wir für einen Moment an, dass es immer viel sicherer ist, den Zugriff über IIS zu beschränken, um sicherzustellen, dass so wenig Löcher wie möglich vorhanden sind. Mit diesem gehen wir diese Straße hinunter.

Erstellen Sie einen WCF-Dienst, der über einige Einstiegspunkte verfügt, und die Schnittstelle könnte so aussehen.

public interface IDocumentService
{
    public string BuildTrustedRelationship(string privateKey);

    public byte[] ReadFile(string token, string fileName);

    public void WriteFile(string token, string fileName, byte[] file);
}

Jetzt können Sie diesen Dienst sehr einfach über einen Windows-Dienst hosten, und jetzt müssen Sie nur noch über Application_start die Beziehung mit dem Dienst aufbauen, um Ihren Token zu erhalten, und schon können Sie loslegen. Die andere nette Sache hier ist, dass dieser Service intern und vertrauenswürdig ist und ich ihn sogar schon auf dem Dateiserver gehostet habe und es daher viel einfacher ist, Berechtigungen für diesen Vorgang zu erteilen.




Related