Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen, das Problem zu beheben, das System.Security.SecurityException möglicherweise ausgelöst wird, wenn Sie ein virtuelles Verzeichnis verwenden, das auf eine Remotefreigabe verweist, um ein Microsoft ASP zu hosten. NET-basierte Anwendung.
Ursprüngliche Produktversion: ASP.NET
Ursprüngliche KB-Nummer: 320268
Problembeschreibung
Wenn Sie ein virtuelles Verzeichnis verwenden, das auf eine Remotefreigabe verweist, um ein ASP zu hosten. NET-basierte Anwendung wird möglicherweise eine Fehlermeldung angezeigt, die einem der folgenden Beispiele ähnelt:
Nachricht 1
Sicherheits exception Description: The application attempted to perform an operation not allowed by the security policy. Wenn Sie dieser Anwendung die erforderliche Berechtigung erteilen möchten, wenden Sie sich bitte an Ihren Systemadministrator, oder ändern Sie die Vertrauensstufe der Anwendung in der Konfigurationsdatei.
Ausnahmedetails: System.Security.SecurityException: Sicherheitsfehler.
Quellfehler:
Zeile 30: private statische Bool __intialized = false; Zeile 31: Zeile 32: öffentliche Global_asax() { Zeile 33: wenn ((ASP. Global_asax.__intialized == false)) { Zeile 34: ASP. Global_asax._intialized = true;Nachricht 2
Serverfehler in /ApplicationName-Anwendung.
Beschreibung des Parserfehlers: Während der Analyse einer Ressource, die zum Verarbeiten dieser Anforderung erforderlich ist, ist ein Fehler aufgetreten. Bitte überprüfen Sie die folgenden spezifischen Analysefehlerdetails, und ändern Sie die Quelldatei entsprechend.
Parser-Fehlermeldung: Der Typ ApplicationName.Global konnte nicht geladen werden.
Quellfehler: Zeile 1: <%@ Application Codebehind="Global.asax.cs" Inherits="ApplicationName.Global" %> Quelldatei: Pfad der Anwendung\global.asax Zeile: 1
Ursache
Der System.Web Namespace hat die Anwendung nicht AllowPartiallyTrustedCallersAttribute . Weitere Informationen finden Sie unter Muster und Praktiken.
Jeder Code, der sich nicht in der codegruppe My_Computer_Zone befindet, die nicht über dieses Attribut verfügt, erfordert das Recht "FullTrust ". Für die Remotefreigabe, die den Inhalt der Webanwendungen enthält, ist "FullTrust" erforderlich.
Lösung
Um dieses Verhalten zu beheben, erteilen Sie der Remotefreigabe das FullTrust-Recht :
Öffnen Sie auf dem Webserver die Verwaltungstools, und doppelklicken Sie dann auf Microsoft .NET Framework-Konfiguration.
Erweitern Sie die Laufzeitsicherheitsrichtlinie, erweitern Sie den Computer, und erweitern Sie dann Codegruppen.
Klicken Sie mit der rechten Maustaste auf All_Code, und wählen Sie dann "Neu" aus.
Wählen Sie " Neue Codegruppe erstellen" aus. Geben Sie Ihrer Codegruppe einen relevanten Namen, z. B. den Namen der Anwendungsfreigabe. Wählen Sie Weiter aus.
Wählen Sie unter "Bedingungstyp für diese Codegruppenliste auswählen " die URL aus.
Geben Sie im URL-Feld den Pfad der Freigabe im folgenden Format ein:
file:////\\computername\\sharename\*Notiz
Ersetzen Sie den Computernamen durch den Namen des Computers, auf dem die Remotefreigabe gehostet wird. Ersetzen Sie den Freigabenamen durch den Namen der Freigabe.
Wählen Sie Weiter aus. Wählen Sie auf der nächsten Seite "Vorhandenen Berechtigungssatz verwenden" und dann "FullTrust" aus.
Klicken Sie auf Next (Weiter) und dann auf Finish (Fertig stellen).
Starten Sie Internetinformationsdienste (IIS) neu, um den ASP.NET Arbeitsprozess neu zu starten.
Wenn die Microsoft .NET Framework-Konfiguration nicht unter "Verwaltungstools" angezeigt wird, können Sie das .NET Framework Software Development Kit (SDK) installieren, um Microsoft .NET Framework-Konfiguration hinzuzufügen. Stattdessen können Sie den folgenden Befehl ausführen, um die Änderung vorzunehmen:
Drive :\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\computername\sharename\*" FullTrust -exclusive on
Führen Sie den folgenden Befehl aus, um weitere Informationen darüber zu erfahren, was diese Argumente tun:
caspol.exe -?
Status
Es handelt sich hierbei um ein beabsichtigtes Verhalten.
Weitere Informationen
In dieser Konfiguration muss das Konto, unter dem der ASP.NET Arbeitsprozess ausgeführt wird, über ausreichende Rechte für die Remotefreigabe verfügen. Sie können das Konto festlegen, unter dem der Arbeitsprozess ausgeführt wird, indem Sie das <processmodel> Tag in der Datei "Machine.config " verwenden.
Schritte zum Reproduzieren des Verhaltens
- Erstellen Sie ein neues virtuelles Verzeichnis, das auf eine Remotefreigabe verweist.
- Erstellen Sie eine Anwendung für das virtuelle Verzeichnis. Stellen Sie sicher, dass der Benutzer, der eine Verbindung mit der Freigabe herstellt, Lesezugriff auf den Remoteinhalt hat.
- Ändern Sie im
<processmodel>Tag der Datei "Machine.config " den Benutzer in einen Domänenbenutzer, der über Listen-, Lese- und Ausführungsberechtigungen für die Remotefreigabe verfügt. - Erstellen Sie eine Inline-.aspx Datei, und fügen Sie die Datei dann in die Remotefreigabe ein.
- Senden einer Anforderung für die Seite.
References
Weitere Informationen zu den Berechtigungen, die das ASPNET-Konto zum Ausführen ASP.NET Anwendungen benötigt, finden Sie unter Einführung in ASP.NET Identity. Weitere Informationen zu ASP.NET Sicherheit finden Sie unter INFO: ASP.NET Sicherheitsübersicht.