Carpeta de código compartido en el sitio web asp.net
Si su aplicación web incluye código que desea compartir entre varias páginas, puede guardar el código en un archivo en dos carpetas especiales (carpeta Bin y carpeta App_Code) en el directorio raíz de la aplicación web sujeta. Cuando crea estas carpetas y almacena tipos específicos de archivos en ellas, ASP.NET maneja esos archivos de una manera especial.
Carpeta Bin Puede almacenar ensamblados compilados en la carpeta Bin, y otro código (como el código de página) en cualquier lugar de la aplicación web hace referencia automáticamente a la carpeta. Un ejemplo típico es el código compilado para una clase personalizada. Puede copiar el ensamblado compilado en la carpeta Bin de su aplicación web para que todas las páginas puedan usar esta clase.
No es necesario registrar los ensamblajes en la carpeta Bin. Mientras el archivo .dll exista en la carpeta Bin, ASP.NET lo reconocerá. Si cambia el archivo .dll y escribe una nueva versión en la carpeta Bin, ASP.NET detectará la actualización y utilizará la nueva versión del archivo .dll para solicitudes posteriores de nuevas páginas.
Seguridad de la carpeta Bin Colocar ensamblados compilados en la carpeta Bin supone un riesgo para la seguridad. Si usted mismo escribió y compiló el código, sabrá lo que hace. Sin embargo, debes tratar el código compilado en la carpeta Bin como cualquier código ejecutable. Tenga cuidado con el código compilado hasta que lo haya probado y esté seguro de comprender su funcionalidad.
Tenga en cuenta los siguientes aspectos de seguridad relacionados con la colocación o no del código compilado en la carpeta Bin:
Los ensamblados en la carpeta Bin tienen como ámbito la aplicación actual. Por lo tanto, no pueden acceder a recursos fuera de la aplicación web actual ni llamar a código fuera de la aplicación web actual.
En tiempo de ejecución, el nivel de acceso de un ensamblado está determinado por el nivel de confianza especificado en la computadora local. Para obtener más información, consulte Niveles de confianza y archivos de políticas de ASP.NET.
Si utiliza un diseñador como Visual Studio, el código de la carpeta Bin se ejecuta en un contexto diferente al de cuando se ejecuta. Por ejemplo, el código podría ejecutarse con total confianza.
Carpeta App_Code Puede almacenar el código fuente en la carpeta App_Code, que se compilará automáticamente en tiempo de ejecución. Cualquier otro código en la aplicación web puede acceder al ensamblaje resultante. Por lo tanto, la carpeta App_Code funciona de manera muy similar a la carpeta Bin, excepto que puede almacenar código fuente en ella en lugar de código compilado. La carpeta App_Code y su lugar especial en las aplicaciones web ASP.NET le permite crear clases personalizadas y otros archivos de código fuente únicamente y usarlos en su aplicación web sin tener que compilarlos por separado.
La carpeta App_Code puede contener archivos de código fuente escritos en forma de archivos de clase tradicionales (es decir, archivos con extensiones .vb, .cs, etc.). Sin embargo, también puede contener archivos que no parecen estar escritos explícitamente en un lenguaje de programación específico. Los ejemplos incluyen archivos .wsdl (lenguaje de descripción de servicios web) y archivos de esquema xml (.xsd). ASP.NET puede compilar estos archivos en ensamblados.
La carpeta App_Code puede contener tantos archivos y subcarpetas como necesite. Puede organizar su código fuente de la forma que considere conveniente, y ASP.NET aún compilará todo el código en un solo ensamblado, y otro código puede acceder a ese ensamblado en cualquier lugar de la aplicación web.
Aviso
No se permiten controles de usuario en la carpeta App_Code. Esto incluye controles de usuario de un solo archivo, así como controles de usuario que utilizan el modelo de código subyacente. Colocar el control de usuario en el directorio App_Code hace que el código de control de usuario se compile fuera del orden requerido y, por lo tanto, no está permitido. Tenga en cuenta que no es necesario colocar los controles de usuario en la carpeta App_Code; estos controles ya están disponibles para las páginas en cualquier parte de la aplicación.
Inferir el lenguaje de programación de la carpeta App_Code
La carpeta App_Code no está marcada explícitamente como que contiene archivos escritos en ninguno de los lenguajes de programación. En cambio, ASP.NET infiere qué compilador debe invocarse para la carpeta App_Code en función de los archivos que contiene. Si la carpeta App_Code contiene archivos .vb, ASP.NET usa el compilador de Visual Basic; si contiene archivos .cs, ASP.NET usa el compilador de C#, y así sucesivamente.
Si la carpeta App_Code contiene solo archivos que no indican explícitamente un lenguaje de programación (como archivos .wsdl), ASP.NET utilizará el compilador predeterminado de la aplicación web, que se encuentra en el elemento de compilación de la aplicación web o en el archivo de configuración de la computadora. .
Uso de múltiples lenguajes de programación en la carpeta App_Code Debido a que el código fuente en la carpeta App_Code se compila en un solo ensamblado, todos los archivos en la carpeta App_Code deben escribirse en el mismo lenguaje de programación. Por ejemplo, la carpeta App_Code no puede contener código fuente escrito tanto en Visual Basic como en C#.
Sin embargo, puede configurar su aplicación web para tratar las subcarpetas de la carpeta App_Code como unidades compilables independientes. De esta forma, cada carpeta puede contener código fuente escrito en un lenguaje de programación diferente. Esta configuración se especifica creando un elemento de compilación en el elemento codeSubDirectories del archivo Web.config y luego agregando una referencia a la subcarpeta. El siguiente ejemplo ilustra cómo configurar subcarpetas denominadas VBCode y CSCode para compilarlas en diferentes ensamblados:
Copiar código
<depuración de compilación="falso">
<códigoSubDirectorios>
<agregar nombre de directorio="VBCode" />
<agregar nombre de directorio="CSCode" />
</codeSubDirectorios>
</compilation>Las referencias a las subcarpetas VBCode y CSCode no necesitan incluir ninguna información sobre los lenguajes de programación contenidos en las subcarpetas. Al igual que con la carpeta App_Code, ASP.NET infiere el compilador que se utilizará en función de los archivos de la subcarpeta.
Seguridad de la carpeta App_Code
Los problemas de seguridad con el código en la carpeta App_Code son básicamente los mismos que los problemas de seguridad con el código en la carpeta Bin: el código se compila en un ensamblado en tiempo de ejecución. Lo que es mejor que la carpeta Bin es que puedes leer el código fuente de los archivos en la carpeta App_Code. Sin embargo, todavía existen riesgos de seguridad si no comprende completamente el código. Por lo tanto, el código fuente en la carpeta App_Code debe tratarse con la misma precaución que el código compilado generado a partir del mismo código fuente.
Extraído de: http://msdn2.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
-