Berechtigungsproblem mit virtuellem Verzeichnis zum UNC-Pfad

13

Ich habe ein virtuelles Verzeichnis auf meiner Site (Testumgebung). Es ist eine UNC-Freigabe, die auch als öffentliches FTP verwendet wird.

Es ist so konfiguriert, dass eine Verbindung als Domänenadministratorkonto hergestellt wird, und "Testeinstellungen" besagt, dass alles funktioniert. Wenn ich jedoch versuche, eine Verbindung herzustellen, erhalte ich:

500 - "Fehler beim Starten der Überwachung von Änderungen in \ INTRANET \ FTP \ test \ web.config, da der Zugriff verweigert wurde"

Dies ist ein ASP.NET YSOD. Ich bin mir nicht sicher, warum ASP.NET überhaupt involviert ist, da es sich um eine statische JPG-Datei handelt, die ich anfordere.

Ich habe versucht, die Ablaufverfolgung für fehlgeschlagene Anforderungen zu aktivieren. Dies ist der spezifische Fehler:

  • Modulname WindowsAuthentication
  • Benachrichtigung 2
  • HTTP-Status 500
  • Interner HttpReason-Serverfehler
  • HttpSubStatus 0
  • ErrorCode 0
  • ConfigExceptionInfo
  • Benachrichtigung AUTHENTICATE_REQUEST
  • ErrorCode Der Vorgang wurde erfolgreich abgeschlossen. (0x0)

Wenn ich den "Physical Path Logon Type" von ClearText in Network ändere. Ich erhalte den folgenden IIS-Fehler:

HTTP-Fehler 500.19 - Interner Server

Fehler Auf die angeforderte Seite kann nicht zugegriffen werden, da die zugehörigen Konfigurationsdaten für die Seite ungültig sind.

Detaillierte Fehlerinformationen

  • Modul IIS Web Core
  • Benachrichtigung BeginRequest
  • Handler Noch nicht festgelegt
  • Fehlercode 0x80070005
  • Config Error Konfigurationsdatei kann nicht aufgrund unzureichender Berechtigungen lesen
  • Konfigurationsdatei \\?\UNC\INTRANET\FTP\test\web.config
  • Angeforderte URL http://test.mydowmain.com:80/uploads/images/ca49acf6-6174-412e-8abd-59fab983e931.jpg

  • Physischer Pfad \\INTRANET\FTP\test\images\ca49acf6-6174-412e-8abd-59fab983e931.jpg

  • Anmeldemethode Noch nicht festgelegt

  • Logon User Noch nicht festgelegt
  • Protokollverzeichnis für Anforderungsablaufverfolgung fehlgeschlagen C:\inetpub\logs\FailedReqLogFiles

Dies erzeugt nicht seltsamerweise ein fehlgeschlagenes Anforderungsprotokoll. Ich habe die Ablaufverfolgung für fehlgeschlagene Anforderungen so eingestellt, dass Fehler mit den Fehlercodes 400-999 verfolgt werden.

Beachten Sie auch, dass beim Öffnen der Konfigurationsfunktion in IIS ein Fehler auftritt, bei dem der Zugriff verweigert wird.

Ich habe auf meinem lokalen Entwicklercomputer genau dasselbe Setup mit demselben UNC-Pfad und demselben Benutzer, mit dem es funktioniert. Nur auf dem Testserver geht es nicht.

Was mache ich falsch?

Rob Stevenson-Leggett
quelle

Antworten:

10

Die Tatsache, dass es sich um eine ASP.net-App handelt, ist wahrscheinlich genau das, worum es hier geht. Die Identität Ihres Anwendungspools muss über Rechte verfügen (nicht unbedingt die IIS-Identität; standardmäßig ist die Identität des Anwendungspools das lokale Netzwerkdienstkonto.) Wahrscheinlich müssen Sie auch caspol.exe auf Ihrem IIS-Computer ausführen.

http://msdn.microsoft.com/en-us/library/cb6t8dtz%28v=vs.80%29.aspx

http://learn.iis.net/page.aspx/50/aspnet-20-35-shared-hosting-configuration/

%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -m -ag 1.  -url "file://\\remotefileserver\content$\*" FullTrust
mfinni
quelle
7

Ich habe das Problem behoben, indem ich auf dem Webserver und dem unc-Server übereinstimmende Konten erstellt habe. Anschließend habe ich den Anwendungspool so geändert, dass er mit dem entsprechenden Konto und nicht mit dem Netzwerkdienst ausgeführt wird. Dies gab mir die Flexibilität, das Kennwort auf beiden Servern zu synchronisieren, ohne andere vom Netzwerkdienst abhängige Funktionen zu beeinträchtigen.

IT-Aktion
quelle
3
Nachdem ich 5 Stunden gebraucht hatte und nach einer Lösung gesucht hatte, funktionierte die Lösung von IT Action für mich. Daher habe ich auf beiden Computern genau dieselben Benutzer erstellt und dann den Anwendungspool so eingerichtet, dass er mit diesem Konto ausgeführt wird. Ich wollte gerade verrückt werden. Endlich gelöst. Hoffe, das hilft allen, hat das gleiche Problem
Massive +1. Ich bin im selben Boot wie @ user249232 - ein Spiegelkonto auf dem IIS-Computer zu eröffnen, löste das Problem sofort nach langem Suchen. Ich habe den Benutzer jedoch in den Grundeinstellungen der Site durch "Verbinden als" festgelegt, nicht durch Ändern der ID des App-Pools.
Scruffy
1
Kudos, für die diese Lösung funktioniert, aber dies ist eine schreckliche Lösung für mich, da ich nicht versuchen möchte, die Einrichtung meines Corp-Domain-Benutzernamens in einem eigenen persönlichen vbox-Linux-Setup nachzuahmen, für das ich eine andere Benutzername-Konvention verwende. Die Passwortsynchronisierung ist eine zusätzliche Komplexität, die für mich übertrieben ist, da ich bereits geteilte Server verwende (iis auf meinem Host und php56 unter Linux, um Zugriff für den Komponisten zu haben)
Brian Thomas
nach 2 tagen. Das hat bei mir funktioniert. Sogar ich hatte dieselben Anmeldeinformationen ausprobiert und es funktionierte nicht. Schließlich funktioniert es nach dem Verschieben dieses gemeinsamen Benutzers in der Administratorgruppe
Ketan Kotak
2

Wenn es sich bei dieser freigegebenen Quelle nicht um eine Anwendung handelt (z. B. einen Image-Ordner), versuchen Sie, das virtuelle Verzeichnis so zu konfigurieren, dass es von der Stammanwendung ignoriert wird, die das virtuelle Verzeichnis enthält (in meinem Fall habe ich dies durch Ändern des Stamm-App-Pool-Typs als abgeschlossen) Klassisch statt Integriert). Befindet sich jedoch eine Anwendung in dem freigegebenen Punkt, können Sie den angegebenen Weg @mfinni befolgen.

Emre Guldogan
quelle
1

Sie können überprüfen, ob das Konto, unter dem IIS ausgeführt wird, über die richtigen / erforderlichen Rechte für die problematische UNC verfügt.

user48838
quelle
3
Wenn dies keine ASP.net-App wäre, wären Sie am Geld. Da es in einem Anwendungspool ausgeführt wird, muss auf die App-Pool-Identität zugegriffen werden, nicht auf das IIS-Benutzerkonto.
mfinni
1

Ich hatte das gleiche Problem mit IIS 7.5 und fand folgende Lösung:

  1. Erstellen Sie einen lokalen Benutzer auf dem Server mit der Freigabe
  2. Erstellen Sie die Netzwerkfreigabe, und geben Sie dem in Schritt 1 erstellten Benutzer die gewünschten Berechtigungen. Windows richtet die Berechtigungen für den von Ihnen angegebenen Benutzer ein
  3. Gehe in das virtuelle Verzeichnis auf IIS und öffne die "erweiterten Einstellungen"
  4. Geben Sie die URL im physischen Pfad für die Netzwerkfreigabe als ein \\<servername>\<sharename>
  5. Klicken Sie auf die Anmeldeinformationen für den physischen Pfad. Fügen Sie die Anmeldeinformationen für den in Schritt 1 erstellten Benutzer hinzu
Charles
quelle
0

Genauso war es mit einem Nicht-Domain-Webserver, der über ein Domain-Konto auf einige Domain-Ressourcen zugreift. Es trat ein merkwürdiges Verhalten auf ("Testanmeldeinformationen" schlugen fehl, obwohl wir wussten, dass die Anmeldeinformationen stimmen, dass Ordner und Dateien in der Inhaltsansicht angezeigt, aber nicht durchsucht werden konnten). Die Lösung bestand darin, auf dem Computer einen lokalen Benutzer mit demselben Namen wie der Domänenbenutzer zu erstellen.

Ich denke, das ist, was passiert wäre, wenn der Webserver ein Mitglied der Domäne wäre und der lokale Benutzer einige lokale Ressourcen (config?) Abrufen müsste, um die virtuelle abzubilden.

Hoffe das hilft jemandem.

jprmsn
quelle