Fehlermeldung
Heute habe ich nach dem Aktualisieren einer ASP.NET-3.5-Anwendung auf einem IIS7-Server folgende Fehlermeldung im Browser erhalten:
Serverfehler in der Anwendung /MyApplication.
Sicherheitsausnahme
Beschreibung: Die Anwendung hat versucht, einen Vorgang auszuführen, der von der Sicherheitsrichtlinie nicht zugelassen ist. Um der Anwendung die erforderliche Berechtigung zu erteilen, wenden Sie sich an den Systemadministrator oder ändern Sie die Vertrauensebene für die Anwendung in der Konfigurationsdatei.
Ausnahmedetails: System.Security.SecurityException: Fehler bei der Anforderung des Berechtigungstyps „System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089“.
Quellfehler:
Beim Ausführen der aktuellen Webanforderung wurde einen unbehandelte Ausnahme generiert. Informationen über den Ursprung und die Position der Ausnahme können mit der Ausnahmestapelüberwachung angezeigt werden.
Stapelüberwachung:
[SecurityException: Fehler bei der Anforderung des Berechtigungstyps „System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″.]
System.Reflection.Assembly._GetExportedTypes() +0
System.Reflection.Assembly.GetExportedTypes() +16
System.Web.Compilation.BuildResultMainCodeAssembly.FindAppInitializeMethod() +26
System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed) +882
System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories) +125
System.Web.Compilation.BuildManager.CompileCodeDirectories() +265
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +320
Versionsinformationen: Microsoft .NET Framework-Version:2.0.50727.4927; ASP.NET-Version:2.0.50727.4927
Das war ein Schock!
Und auch noch auf einem Produktivserver eines Kunden. Fuck!
Workaround
Also gleich die zuvor gemachte Sicherheitskopie zurückgespielt, dann lief alles wieder.
Damit erst mal genug, während der Hauptnutzungszeit der Kunden keine weitere Experimente.
Analyse und Lösung
Heute Abend habe ich dann nach Gesprächen mit einem Kollegen eine Idee gehabt:
Es könnte ja sein, dass es beim Entpacken der neuen Dateien aus dem ZIP-Archiv mit dem ich diese auf den Server übertragen habe, ggf. die NTFS-Berechtigungen zerschossen/verbogen wurden.
Also habe ich nochmals die neuen Dateien in den Zielordner des Webserver kopiert und via Rechtsklick auf den Ordner, alle Sicherheitsberechtigungen auf die neu hineinkopierten Dateien und Ordner vererben lassen, besehende Berechtigungen ersetzen lassen.
Und siehe da: Die Anwendung funktioniert wieder wie gewünscht!