Dossier de code partagé sur le site Web asp.net
Si votre application Web comprend du code que vous souhaitez partager sur plusieurs pages, vous pouvez enregistrer le code dans un fichier dans deux dossiers spéciaux (dossier Bin et dossier App_Code) dans le répertoire racine de l'application Web Clamped. Lorsque vous créez ces dossiers et y stockez des types spécifiques de fichiers, ASP.NET gère ces fichiers d'une manière particulière.
Dossier Bin Vous pouvez stocker des assemblys compilés dans le dossier Bin, et tout autre code (tel que le code de page) n'importe où dans l'application Web fait automatiquement référence au dossier. Un exemple typique est votre code compilé pour une classe personnalisée. Vous pouvez copier l'assembly compilé dans le dossier Bin de votre application Web afin que toutes les pages puissent utiliser cette classe.
Les assemblys du dossier Bin n’ont pas besoin d’être enregistrés. Tant que le fichier .dll existe dans le dossier Bin, ASP.NET le reconnaîtra. Si vous modifiez le fichier .dll et en écrivez une nouvelle version dans le dossier Bin, ASP.NET détectera la mise à jour et utilisera la nouvelle version du fichier .dll pour les demandes de nouvelles pages ultérieures.
Sécurité du dossier Bin Placer des assemblys compilés dans le dossier Bin présente un risque de sécurité. Si vous avez écrit et compilé le code vous-même, vous savez à quoi sert le code. Cependant, vous devez traiter le code compilé dans le dossier Bin comme n'importe quel code exécutable. Soyez prudent concernant le code compilé jusqu'à ce que vous l'ayez testé et que vous soyez sûr de comprendre ses fonctionnalités.
Veuillez noter les aspects de sécurité suivants liés au placement ou non du code compilé dans le dossier Bin :
Les assemblys du dossier Bin sont limités à l’application actuelle. Par conséquent, ils ne peuvent pas accéder aux ressources en dehors de l’application Web actuelle ni appeler du code en dehors de l’application Web actuelle.
Au moment de l'exécution, le niveau d'accès d'un assembly est déterminé par le niveau de confiance spécifié sur l'ordinateur local. Pour plus d’informations, consultez Niveaux de confiance et fichiers de stratégie ASP.NET.
Si vous utilisez un concepteur tel que Visual Studio, le code du dossier Bin s'exécute dans un contexte différent de celui lors de son exécution. Par exemple, le code peut s'exécuter en toute confiance.
Dossier App_Code Vous pouvez stocker le code source dans le dossier App_Code, qui sera automatiquement compilé au moment de l'exécution. Tout autre code de l’application Web peut accéder à l’assembly résultant. Par conséquent, le dossier App_Code fonctionne un peu comme le dossier Bin, sauf que vous pouvez y stocker du code source au lieu du code compilé. Le dossier App_Code et sa place particulière dans les applications Web ASP.NET vous permettent de créer des classes personnalisées et d'autres fichiers contenant uniquement du code source et de les utiliser dans votre application Web sans avoir à les compiler séparément.
Le dossier App_Code peut contenir des fichiers de code source écrits sous la forme de fichiers de classe traditionnels (c'est-à-dire des fichiers avec des extensions .vb, .cs, etc.). Cependant, il peut également contenir des fichiers qui ne semblent pas explicitement écrits dans un langage de programmation spécifique. Les exemples incluent les fichiers .wsdl (Web Services Description Language) et les fichiers de schéma XML (.xsd). ASP.NET peut compiler ces fichiers en assemblys.
Le dossier App_Code peut contenir autant de fichiers et de sous-dossiers que nécessaire. Vous pouvez organiser votre code source comme bon vous semble, et ASP.NET compilera toujours tout le code en un seul assembly, et cet assembly sera accessible par un autre code n'importe où dans l'application Web.
Avis
Les contrôles utilisateur ne sont pas autorisés dans le dossier App_Code. Cela inclut les contrôles utilisateur à fichier unique ainsi que les contrôles utilisateur qui utilisent le modèle code-behind. Placer le contrôle utilisateur dans le répertoire App_Code entraîne la compilation du code du contrôle utilisateur dans le désordre et n'est donc pas autorisé. Notez qu'il n'est pas nécessaire de placer les contrôles utilisateur dans le dossier App_Code ; ces contrôles sont déjà disponibles pour les pages n'importe où dans l'application.
Déduire le langage de programmation du dossier App_Code
Le dossier App_Code n'est pas explicitement marqué comme contenant des fichiers écrits dans l'un ou l'autre langage de programmation. Au lieu de cela, ASP.NET déduit quel compilateur doit être appelé pour le dossier App_Code en fonction des fichiers qu'il contient. Si le dossier App_Code contient des fichiers .vb, ASP.NET utilise le compilateur Visual Basic ; s'il contient des fichiers .cs, ASP.NET utilise le compilateur C#, et ainsi de suite.
Si le dossier App_Code contient uniquement des fichiers qui n'indiquent pas explicitement un langage de programmation (comme les fichiers .wsdl), ASP.NET utilisera le compilateur par défaut de l'application Web, qui se trouve dans l'élément de compilation de l'application Web ou du fichier de configuration de l'ordinateur. .
Utilisation de plusieurs langages de programmation dans le dossier App_Code Étant donné que le code source du dossier App_Code est compilé en un seul assembly, tous les fichiers du dossier App_Code doivent être écrits dans le même langage de programmation. Par exemple, le dossier App_Code ne peut pas contenir de code source écrit à la fois en Visual Basic et en C#.
Cependant, vous pouvez configurer votre application Web pour traiter les sous-dossiers du dossier App_Code comme des unités compilables distinctes. De cette façon, chaque dossier peut contenir du code source écrit dans un langage de programmation différent. Vous spécifiez cette configuration en créant un élément de compilation dans l'élément codeSubDirectories du fichier Web.config, puis en ajoutant une référence au sous-dossier. L'exemple suivant illustre comment configurer des sous-dossiers nommés VBCode et CSCode pour les compiler dans différents assemblys :
Copier le code
<compilation debug="false">
<codeSubDirectories>
<ajouter un nom de répertoire="VBCode" />
<ajouter un nom de répertoire="CSCode" />
</codeSubDirectories>
</compilation>Les références aux sous-dossiers VBCode et CSCode ne doivent inclure aucune information sur les langages de programmation contenus dans les sous-dossiers. Tout comme avec le dossier App_Code lui-même, ASP.NET déduit le compilateur à utiliser en fonction des fichiers du sous-dossier.
Sécurité du dossier App_Code
Les problèmes de sécurité liés au code dans le dossier App_Code sont fondamentalement les mêmes que ceux liés au code dans le dossier Bin : le code est compilé dans un assembly au moment de l'exécution. Ce qui est mieux que le dossier Bin, c'est que vous pouvez lire le code source des fichiers dans le dossier App_Code. Cependant, il existe toujours des risques de sécurité si vous ne comprenez pas entièrement le code. Par conséquent, le code source du dossier App_Code doit être traité avec la même prudence que le code compilé généré à partir du même code source.
Extrait de : http://msdn2.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
-