fragen stichworte

Serveranwendung nicht verfügbar - Datei oder Assembly System.Web konnte nicht geladen werden. Zugriff wird verweigert

Ich bin ein Entwickler, der versucht, ein virtuelles Verzeichnis für einen WCF-Webdienst auf einem Windows Server 2003-Computer (32-Bit-Computer) einzurichten, und ich bekomme weiterhin "Serveranwendung nicht verfügbar" mit den folgenden Ereignissen, die im Ereignisprotokoll protokolliert sind:

Message: Could not load file or assembly 'System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Access is denied.

Bisher habe ich es versucht:

  • Überprüfen Sie das für die anonyme Zugriffskontrolle verwendete Konto (dies ist ein lokaler Administrator)
  • Überprüfen der Berechtigungen für das Verzeichnis C:\Windows\Microsoft.Net\Framework (ASPNET hat Lese-/Schreibzugriff, ich habe sogar jedem Zugriff gewährt)
  • Deaktivieren und Aktivieren der ASP.Net v2.0-Erweiterung
  • Löschen und erneutes Erstellen der Erweiterung .svc in der Liste der Anwendungserweiterungen
  • Vergewissern Sie sich, dass System.Web im GAC vorhanden ist.
  • Neuinstallation des .NET Framework 3.5 SP 1
  • Dem virtuellen Verzeichnis einen eigenen Anwendungspool zuweisen
  • Fusionsprotokollierung sagt mir nichts Interessantes aus

Ich kann es nicht herausfinden - es gibt einen anderen .asmx-Webdienst, der auf demselben Webserver mit den gleichen Einstellungen einwandfrei zu funktionieren scheint. Was habe ich vermisst?

Gibt es Techniken, mit denen diese Art von Berechtigungsproblemen ermittelt werden kann? Es wäre nützlich, das Benutzerkonto und den Pfad zu kennen, auf das der Benutzer zugreifen möchte. Die Aktivierung der Fehlerereignisse in den Überwachungsrichtlinien der Maschinen schien jedoch nichts zu tun.

antworten

Mein schlechtes Verhalten - dies scheint ein Dupe von https://serverfault.com/questions/63675/server-unavailable-and-removed-permissions-on-net-sites-after-windows-update zu sein. Ich habe die Berechtigungen für das Verzeichnis überprüft, in dem der Dienst selbst enthalten war, und alles war in Ordnung.

Ich habe auch bemerkt, dass in der anderen Frage FileMon verwendet wurde, um detailliertere Informationen darüber zu erhalten, auf was/wer was nicht zugegriffen hat.

Der letzte Kommentar enthält wahrscheinlich den Schlüssel. Filemon (oder processmon) ist dein Freund in einer solchen Situation. Wenn Sie es nicht verwendet haben, können Sie es sicher und kostenlos auf einem Produktionsserver ausführen. (Lassen Sie die Daten einfach nicht zu lange erfassen)

Der Berechtigungsfehler, den Sie haben, ist wahrscheinlich von etwas im GAC, da System.Web vom GAC aufgerufen werden sollte. Die einzige Ausnahme ist, wenn der Entwickler die Datei System.Web.dll im Ordner/bin abgelegt hat. Berechtigungen sollten nicht so gesperrt sein, es sei denn, jemand hat den Server wirklich gehärtet. Der Prozessmonitor sollte Ihnen die Antwort schnell mitteilen.

Um es aufzunehmen, lassen Sie Process Monitor in die Warteschlange stellen, starten Sie ein Capture, aktualisieren Sie die ausgefallene Seite, stoppen Sie das Capture und suchen Sie nach dem Wort "denied".

there is another .asmx web service that appears to work perfectly on the same web server with the same settings. What have I missed

Könnte es sein, dass Sie versuchen, verschiedene Websites mit demselben Port und derselben IP-Adresse auszuführen? Könnten Sie versuchen, den Port eines der beiden zu ändern oder den anderen Standort herunterzufahren?

Nur eine Longshot.