Zugriff auf Dateien im Netzwerk freigeben in c# web app
Ich habe eine web-Anwendung, Lesen (und vielleicht schreiben) von Dateien von einem Netzwerk-share. Ich Frage mich, was der beste Weg, dies zu tun wäre?
Ich kann nicht den network service oder aspnet-Konten Zugriff auf die Netzwerkfreigabe. Könnte ich evtl die Identitätswechsel verwenden.
Die Netzwerkfreigabe und die web-Anwendung sind beide auf derselben domain gehostet, und ich kann einen neuen Benutzer erstellen auf der domain, die speziell für diesen Zweck, aber ich bin mir nicht ganz sicher, wie Sie Sie zu verbinden die Punkte zwischen erstellen des filestream und angeben der Anmeldeinformationen in die web-Anwendung.
Leider das Laufwerk nicht gemappt als Netzwerk-Laufwerk auf der Maschine, es ist nur für mich als Netzwerk freigeben, so kann ich leider nicht machen, einen transparenten Anruf.
Es ist ein problem, das ich denken kann, mit Identitätswechsel... ich kann nur imitieren, ein Benutzer pro Anwendungsdomäne ich denke aber ich bin glücklich, korrigiert werden. Ich kann schreiben müssen Sie diese Datei an mehrere verschiedene Aktien, was bedeutet, dass ich kann haben, zu imitieren mehrere Benutzer.
Ich mag die Idee der Schaffung eines token... wenn ich tun kann, dass ich in der Lage sein, zu Fragen der Nutzung vorne, Ihre Anmeldeinformationen und dann dynamisch anwenden, die Sicherheit, und geben Sie Ihnen aussagekräftige Fehlermeldungen, wenn der Zugriff verweigert wird... ich bin Weg, um zu spielen, aber ich werde wieder mit einem update.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gegeben, die jeder bereits hat-domain-Konten. Versuchen Sie, IIS-integrierte Authentifizierung. Sie erhalten eine hässliche logon-box aus Netz, aber Ihre creds passieren sollte nach unten, um die Datei zu teilen.
@lomaxx
Sagen Sie, dass nur Sie Berechtigungen auf die Freigabe, oder dass man manuell zugeordnet es zu einem Laufwerkbuchstaben. Wenn die Sie später verwenden können, ucn \host\Freigabe die gleiche Weise würden Sie einen c:\shared_folder.
Random
Wäre es eine Belastung für Spiegel die Aktie in einen lokalen Ordner auf dem host? Ich höre ROBOCOPY ist ziemlich praktisch.
Andere Idee. Führen Sie IIS auf Ihrem Ziel-Freigabe, die Sie Lesen können, über http und wenn Sie schreiben müssen, untersuchen webdav.
Hatte ich keine Probleme mit der Verbindung zu Netzwerkfreigaben transparent als wären es lokale Laufwerke. Das einzige Problem, das Sie haben, ist, was Sie erwähnt: die
aspnet
- Konto Zugriff auf die Freigabe. Identitätswechsel ist wahrscheinlich der beste Weg, dies zu tun.Sollten Sie in der Lage zu verwenden, eine filestream-Objekte zum Zugriff auf die Netzwerkfreigabe so lange es hat einen Laufwerkbuchstaben auf dem server-Rechner.
Identitätswechsel funktionierte gut für mich in diesem Szenario. Wir hatten einen Assistenten, der die hochgeladene zip-Datei über die website, aber wir Lastenausgleich der Website. Daher Bedarf die Einrichtung einer Möglichkeit zum speichern der Datei auf allen Computern.
Gibt es viele verschiedene Möglichkeiten, es zu tun. Wir beschlossen, alle Anfragen laufen unter dem Benutzer, die wir eingerichtet und soeben das web.Eintrag config und setup-Sicherheit-Berechtigungen für die Ordner der Benutzer. Diese kb Artikel erläutert das setup sehr gut.
Haben Sie einige Optionen und einer von denen ist, die Identitätswechsel, wie Sie erwähnt. Jedoch, ein anderes ich mag zu verwenden, und in der Vergangenheit verwendet haben, ist der zuverlässige service-Aufruf. Nehmen wir an, für einen moment, dass es immer viel sicherer, um den Zugriff über IIS zu gewährleisten, gibt es so wenige Löcher wie möglich. Mit, dass, lassen Sie uns gehen diesen Weg.
Einen WCF-Dienst erstellen, der hat ein paar Einstiegspunkte und das interface könnte wie folgt Aussehen.
Nun, Sie können diesen service über einen Windows-Dienst sehr leicht und so nun alles, was Sie tun müssen, ist auf
Application_start
bauen die Beziehung mit dem service erhalten Sie Ihre token und du bist aus dem Rennen. Die andere nette Sache hier ist, dass dieser service den internen, vertrauenswürdigen, und ich habe auch Gastgeber es auf dem Datei-server vor und so ist es viel einfacher, um zu gewähren, Berechtigungen für diesen Vorgang.Wenn Sie können erstellen Sie eine neue AD-Benutzer, ich denke, die einfachste Lösung ist, um den Anwendungspool auszuführen, die unter das AD-Konto der Behörde, was bedeuten würde, Ihre Anwendung wird jetzt ausgeführt als AD-Benutzer. Würden Sie müssen hinzufügen der AD-Benutzer der IIS Worker Process Group auf der Maschine Ihre Anwendung ausgeführt wird. So lange, wie Sie Ihre AD-Benutzer mit Schreibberechtigungen für die Netzwerkfreigabe, die Sie sollten in der Lage sein, verwenden Sie den UNC-Pfad in Ihrer Datei-Operationen.