(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original

Ordner für freigegebenen Code in ASP.NET-Webprojekten

Falls Ihr Websiteprojekt Code enthält, den Sie für alle Seiten freigeben möchten, können Sie den Code in einem von zwei speziellen Ordnern unterhalb des Stammverzeichnisses der Webanwendung ablegen. Kompilierter Code (DLL-Dateien) wird im Ordner "Bin" und Quellcode im Ordner "App_Code" abgelegt. Wenn Sie diese Ordner erstellen und darin bestimmte Dateitypen speichern, werden diese Dateien von ASP.NET auf besondere Weise behandelt. (Weitere Informationen zur Funktionsweise dieser Ordner in Webanwendungsprojekten finden Sie unter App_Code folder doesn't work with Web Application Projects im Blog von Vishal Joshis).

Wenn Sie kompilierte Assemblys (DLL-Dateien) im Ordner Bin speichern, verweist anderer Code in der Webanwendung (etwa Code für Seiten) automatisch darauf. Ein typisches Beispiel ist kompilierter Code für eine benutzerdefinierte Klasse. Sie können die kompilierte Assembly in den Ordner Bin Ihrer Webanwendung kopieren, und die Klasse steht dann allen Seiten zur Verfügung.

Assemblys im Ordner Bin müssen nicht registriert werden. Das Vorhandensein einer DLL-Datei im Ordner Bin genügt, damit ASP.NET sie erkennt. Wenn Sie die .dll ändern und eine neue Version davon in den Ordner Bin legen, erkennt ASP.NET die Aktualisierung und verwendet ab dann die neue Version der .dll für Seitenaufrufe.

HinweisHinweis

Der Ordner "Bin" wird für Assemblys mit verwaltetem Code verwendet, nicht für Assemblys mit systemeigenem Code (nicht verwalteter Code). Weitere Informationen finden Sie im Thema zum Laden von C++-Assemblys in ASP.NET (möglicherweise in englischer Sprache).

HinweisHinweis

In ASP.NET 2.0 und höheren Versionen können Sie Assemblys mit starkem Namen (signiert) im Ordner "Bin" speichern. Informationen dazu, weshalb dies bei ASP.NET 1.0 oder ASP.NET 1.1 nicht ratsam ist, finden Sie im KnowledgeBase-Artikel zu "Zugriff verweigert"-Fehlermeldungen auf der Microsoft Support-Website (möglicherweise in englischer Sprache).

Sicherheit im Umgang mit dem Ordner "Bin"

Kompilierte Assemblys im Ordner Bin können ein Sicherheitsrisiko bedeuten. Wenn Sie den Code selbst geschrieben und kompiliert haben, wissen Sie, welchem Zweck er dient. Sie sollten kompilierten Code im Ordner Bin jedoch genauso behandeln wie anderen ausführbaren Code. Seien Sie behutsam mit kompiliertem Code, solange Sie ihn nicht getestet haben und genau verstanden haben, wozu er dient.

Folgende Sicherheitsaspekte sind bezüglich kompiliertem Code im Ordner Bin zu beachten:

  • Der Gültigkeitsbereich von Assemblys im Ordner Bin beschränkt sich auf die aktuelle Anwendung. Infolgedessen haben sie keinen Zugang zu Ressourcen oder Code außerhalb der aktuellen Webanwendung.

  • Zur Laufzeit bestimmt sich die Zugriffsebene einer Assembly durch die Vertrauensebene, die auf dem lokalen Computer angegeben ist. Weitere Informationen finden Sie unter ASP.NET-Vertrauensebenen und Richtliniendateien.

  • Wenn Sie ein Projekt in Visual Studio ausführen, wird Code im Ordner Bin in einem anderen Kontext als zur Laufzeit ausgeführt. Visual Studio Development Server wird unter der angemeldeten Identität ausgeführt. Wenn Sie sich als Administrator angemeldet haben, wird der Code mit Administratorberechtigungen ausgeführt. Wenn Sie die Website bereitstellen, wird der Code jedoch in der Regel nicht mit Administratorberechtigungen ausgeführt. Daher sollten Sie das Projekt vor der Bereitstellung mit einem IIS-Server testen, um sicherzustellen, dass bei der Produktion keine Sicherheitsfehler auftreten.

In einem Websiteprojekt kann Quellcode im Ordner App_Code gespeichert werden, und er wird zur Laufzeit automatisch kompiliert. Die sich ergebende Assembly ist für jeden anderen Code in der Webanwendung zugänglich. Der Ordner App_Code arbeitet also ähnlich dem Ordner Bin, mit dem Unterschied, dass in ihm Quellcode anstelle von kompiliertem Code gespeichert wird. Der Ordner App_Code und sein besonderer Status innerhalb einer ASP.NET-Webanwendung ermöglichen es, Benutzerklassen und andere reine Quellcodedateien zu erstellen und in der Webanwendung zu verwenden, ohne sie unabhängig zu kompilieren.

Der Ordner App_Code kann Quellcodedateien enthalten, die als traditionelle Klassendateien geschrieben sind, also Dateien mit .vb-Erweiterung, .cs-Erweiterung usw. Allerdings kann er auch Dateien enthalten, die nicht explizit zu einer bestimmten Programmiersprache gehören. Beispiele dafür sind WSDL-Dateien (Web Service Description Language) und XML-Schemadateien (XSD-Dateien). ASP.NET kann diese Dateien zu Assemblys kompilieren.

Der Ordner App_Code kann beliebig viele Dateien und Unterordner enthalten. Sie können Ihren Quellcode auf beliebige Weise organisieren – ASP.NET wird immer den gesamten Code in eine einzige Assembly kompilieren, die für jeden anderen Code überall in der Webanwendung zugänglich ist.

HinweisHinweis

Benutzersteuerelemente (ASCX-Dateien) sind im Ordner App_Code nicht zulässig. Dies schließt Einzeldatei-Benutzersteuerelemente als auch Benutzersteuerelemente ein, die das CodeBehind-Modell verwenden. Wenn Sie ein Benutzersteuerelement im Verzeichnis App_Code ablegen, wird der Code des Benutzersteuerelements nicht in der erforderlichen Reihenfolge kompiliert. Aus diesem Grund ist dieser Vorgang nicht zulässig. (In jedem Fall müssen sich Benutzersteuerelemente nicht im Ordner App_Code befinden, da sie den Seiten ohnehin überall in der Anwendung zur Verfügung stehen.)

Ableiten der Programmiersprache des Ordners "App_Code"

Der Ordner App_Code verfügt über keine explizite Kennzeichnung, aus der ersichtlich wird, in welcher Programmiersprache die enthaltenen Dateien geschrieben sind. Stattdessen leitet ASP.NET den aufzurufenden Compiler für den Ordner App_Code auf der Basis der enthaltenen Dateien ab. Enthält der Ordner App_Code beispielsweise VB-Dateien, verwendet ASP.NET den Visual Basic-Compiler, enthält er CS-Dateien, verwenden ASP.NET den C#-Compiler usw.

Wenn der Ordner App_Code nur Dateien enthält, deren Programmiersprache nicht eindeutig ist (z. B. WSDL-Dateien), verwendet ASP.NET den Standardcompiler für Webanwendungen, der im compilation-Element der Web.config-Datei der Anwendung oder der Web.config-Datei auf Computerebene angegeben ist. Compiler werden Buildanbieter genannt, und ein Buildanbieter wird für jede Dateierweiterung in einem extension-Element angegeben.

Mehrere Programmiersprachen im Ordner App_Code

Da der Quellcode im Ordner App_Code in eine einzige Assembly kompiliert wird, müssen alle Dateien im Ordner App_Code in derselben Programmiersprache geschrieben sein. Der Ordner App_Code darf zum Beispiel nicht Quellcode sowohl in Visual Basic als auch in C# enthalten.

Allerdings kann die Webanwendung so konfiguriert werden, dass Unterordner des Ordners App_Code als separate kompilierbare Einheiten behandelt werden. Jeder dieser Unterordner kann dann Quellcode in einer anderen Programmiersprache enthalten. Erstellen Sie für diese Konfiguration im compilation-Element der Datei Web.config ein codeSubDirectories-Element, und fügen Sie dem Unterordner einen Verweis hinzu. Im folgenden Beispiel wird gezeigt, wie die Unterordner VBCode und CSCode so konfiguriert werden, dass sie in separate Assemblys kompilieren:

<compilation debug="false">
    <codeSubDirectories>
        <add directoryName="VBCode" />
        <add directoryName="CSCode" />
    </codeSubDirectories>
</compilation>

Die Verweise auf die Unterordner VBCode und CSCode müssen keinerlei Informationen über die im Unterordner enthaltene Programmiersprache beinhalten. Ebenso wie bei dem Ordner App_Code leitet ASP.NET den benötigten Compiler von den Dateien im Unterordner ab.

Sicherheit im Umgang mit dem Ordner "App_Code"

Die Sicherheitsprobleme mit Code im Ordner App_Code sind im Prinzip die gleichen wie mit Code im Ordner Bin – der Code wird zur Laufzeit in eine Assembly kompiliert. Verbessert wird die Lage dadurch, dass Sie den Quellcode der Dateien im Ordner App_Code lesen können. Wenn Sie den Code jedoch nicht vollständig verstehen, stellt er immer noch ein Sicherheitsrisiko dar. Behandeln Sie also Quellcode im Ordner App_Code genauso wie Sie kompilierten Code aus derselben Quelle behandeln würden.

Datum

Versionsgeschichte

Grund

Mai 2011

Ein Link zu verwandten Informationen für Webanwendungsprojekte wurde hinzugefügt.

Kundenfeedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft