Freigegebener Codeordner auf der asp.net-Website
Wenn Ihre Webanwendung Code enthält, den Sie auf mehreren Seiten teilen möchten, können Sie den Code in einer Datei in zwei speziellen Ordnern (Bin-Ordner und App_Code-Ordner) im Stammverzeichnis der Webanwendung Clamped speichern. Wenn Sie diese Ordner erstellen und bestimmte Dateitypen darin speichern, behandelt ASP.NET diese Dateien auf besondere Weise.
Bin-Ordner Sie können kompilierte Assemblys im Bin-Ordner speichern, und anderer Code (z. B. Seitencode) an einer beliebigen Stelle in der Webanwendung verweist automatisch auf den Ordner. Ein typisches Beispiel ist Ihr kompilierter Code für eine benutzerdefinierte Klasse. Sie können die kompilierte Assembly in den Bin-Ordner Ihrer Webanwendung kopieren, sodass alle Seiten diese Klasse verwenden können.
Baugruppen im Bin-Ordner müssen nicht registriert werden. Solange die DLL-Datei im Bin-Ordner vorhanden ist, wird sie von ASP.NET erkannt. Wenn Sie die DLL-Datei ändern und eine neue Version davon in den Bin-Ordner schreiben, erkennt ASP.NET das Update und verwendet die neue Version der DLL-Datei für nachfolgende neue Seitenanforderungen.
Sicherheit des Bin-Ordners Das Platzieren kompilierter Assemblys im Bin-Ordner stellt ein Sicherheitsrisiko dar. Wenn Sie den Code selbst geschrieben und kompiliert haben, wissen Sie, was der Code tut. Allerdings müssen Sie den kompilierten Code im Bin-Ordner wie jeden ausführbaren Code behandeln. Seien Sie vorsichtig mit kompiliertem Code, bis Sie ihn getestet haben und sicher sind, dass Sie seine Funktionalität verstehen.
Bitte beachten Sie die folgenden Sicherheitsaspekte im Zusammenhang damit, ob kompilierter Code im Bin-Ordner abgelegt werden soll oder nicht:
Assemblys im Bin-Ordner sind auf die aktuelle Anwendung beschränkt. Daher können sie nicht auf Ressourcen außerhalb der aktuellen Webanwendung zugreifen oder Code außerhalb der aktuellen Webanwendung aufrufen.
Zur Laufzeit wird die Zugriffsebene einer Assembly durch die auf dem lokalen Computer angegebene Vertrauensebene bestimmt. Weitere Informationen finden Sie unter ASP.NET-Vertrauensstufen und Richtliniendateien.
Wenn Sie einen Designer wie Visual Studio verwenden, wird der Code im Bin-Ordner in einem anderen Kontext ausgeführt als zum Zeitpunkt der Ausführung. Beispielsweise könnte der Code mit voller Vertrauenswürdigkeit ausgeführt werden.
Ordner „App_Code“ Sie können Quellcode im Ordner „App_Code“ speichern, der zur Laufzeit automatisch kompiliert wird. Jeder andere Code in der Webanwendung kann auf die resultierende Assembly zugreifen. Daher funktioniert der Ordner „App_Code“ ähnlich wie der Ordner „Bin“, mit der Ausnahme, dass Sie darin Quellcode anstelle von kompiliertem Code speichern können. Der App_Code-Ordner und seine besondere Stellung in ASP.NET-Webanwendungen ermöglichen es Ihnen, benutzerdefinierte Klassen und andere reine Quellcodedateien zu erstellen und diese in Ihrer Webanwendung zu verwenden, ohne sie separat kompilieren zu müssen.
Der Ordner „App_Code“ kann Quellcodedateien enthalten, die in Form herkömmlicher Klassendateien geschrieben sind (d. h. Dateien mit den Erweiterungen .vb, .cs usw.). Es können jedoch auch Dateien enthalten sein, die nicht explizit in einer bestimmten Programmiersprache geschrieben zu sein scheinen. Beispiele hierfür sind .wsdl-Dateien (Web Services Description Language) und XML-Schemadateien (.xsd). ASP.NET kann diese Dateien in Assemblys kompilieren.
Der Ordner „App_Code“ kann beliebig viele Dateien und Unterordner enthalten. Sie können Ihren Quellcode so organisieren, wie Sie es für praktisch halten, und ASP.NET kompiliert weiterhin den gesamten Code in einer einzigen Assembly, und auf diese Assembly kann von anderem Code überall in der Webanwendung zugegriffen werden.
Beachten
Benutzersteuerelemente sind im Ordner „App_Code“ nicht zulässig. Dazu gehören Einzeldatei-Benutzersteuerelemente sowie Benutzersteuerelemente, die das Code-Behind-Modell verwenden. Das Platzieren des Benutzersteuerelements im Verzeichnis App_Code führt dazu, dass der Benutzersteuercode in einer anderen Reihenfolge kompiliert wird als erforderlich und ist daher nicht zulässig. Beachten Sie, dass die Benutzersteuerelemente nicht im Ordner „App_Code“ abgelegt werden müssen. Diese Steuerelemente stehen den Seiten bereits überall in der Anwendung zur Verfügung.
Leiten Sie die Programmiersprache des App_Code-Ordners ab
Der Ordner „App_Code“ ist nicht ausdrücklich als Ordner gekennzeichnet, der Dateien enthält, die in einer der beiden Programmiersprachen geschrieben wurden. Stattdessen leitet ASP.NET anhand der darin enthaltenen Dateien ab, welcher Compiler für den App_Code-Ordner aufgerufen werden soll. Wenn der Ordner „App_Code“ .vb-Dateien enthält, verwendet ASP.NET den Visual Basic-Compiler; wenn er .cs-Dateien enthält, verwendet ASP.NET den C#-Compiler und so weiter.
Wenn der App_Code-Ordner nur Dateien enthält, die nicht explizit auf eine Programmiersprache hinweisen (z. B. .wsdl-Dateien), verwendet ASP.NET den Standardcompiler der Webanwendung, der sich im Kompilierungselement der Webanwendung oder der Computerkonfigurationsdatei befindet. Sicher .
Verwenden mehrerer Programmiersprachen im App_Code-Ordner Da der Quellcode im App_Code-Ordner in einer einzigen Assembly kompiliert wird, müssen alle Dateien im App_Code-Ordner in derselben Programmiersprache geschrieben sein. Beispielsweise darf der Ordner „App_Code“ keinen Quellcode enthalten, der sowohl in Visual Basic als auch in C# geschrieben wurde.
Sie können Ihre Webanwendung jedoch so konfigurieren, dass Unterordner des App_Code-Ordners als separate kompilierbare Einheiten behandelt werden. Auf diese Weise kann jeder Ordner Quellcode enthalten, der in einer anderen Programmiersprache geschrieben ist. Sie geben diese Konfiguration an, indem Sie im codeSubDirectories-Element der Datei Web.config ein Kompilierungselement erstellen und dann einen Verweis auf den Unterordner hinzufügen. Das folgende Beispiel veranschaulicht, wie Unterordner mit den Namen VBCode und CSCode für die Kompilierung in verschiedene Assemblys konfiguriert werden:
Code kopieren
<compilation debug="false">
<codeSubDirectories>
<add DirectoryName="VBCode" />
<add DirectoryName="CSCode" />
</codeSubDirectories>
</compilation>Verweise auf die Unterordner VBCode und CSCode müssen keine Informationen über die in den Unterordnern enthaltenen Programmiersprachen enthalten. Genau wie beim App_Code-Ordner selbst leitet ASP.NET den zu verwendenden Compiler anhand der Dateien im Unterordner ab.
Sicherheit des App_Code-Ordners
Die Sicherheitsprobleme mit Code im Ordner „App_Code“ sind grundsätzlich dieselben wie die Sicherheitsprobleme mit Code im Ordner „Bin“ – der Code wird zur Laufzeit in eine Assembly kompiliert. Was besser ist als der Bin-Ordner ist, dass Sie den Quellcode der Dateien im App_Code-Ordner lesen können. Allerdings bestehen immer noch Sicherheitsrisiken, wenn Sie den Code nicht vollständig verstehen. Daher muss der Quellcode im Ordner App_Code mit der gleichen Vorsicht behandelt werden wie kompilierter Code, der aus demselben Quellcode generiert wurde.
Auszug aus: http://msdn2.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
-