Publicación de Sitios Web y el namespace ASP

Eva Higueras | 09 de junio de 2011 | 1 comentario

Más sobre: ASP.NET | Tags: , , , , ,

Cuando trabajamos con aplicaciones Web de .Net, a la hora de subir la aplicación al servidor de producción, esta debe ir precompilada para optimizar los tiempos de ejecución, y no subir directamente nuestro código al servidor, entre otras muchas razones. Cuando realizamos esta publicación, si hemos utilizado el namespace ASP, podemos tener algunos problemas.

Primero, enumeramos las alternativas que nos proporciona Visual Studio 2008 para realizar este precompilado. La precompilación la realizaremos desde la opción de Publicar Sitio Web.

  • Permitir que este sitio precompilado se actualice

Habilitado: Los archivos ASPX (.aspx, .ascx, .master…) no se compilaran y se copiaran tal cual, sólo se incluirá en ellos una referencia al ensamblado en el que se encuentra el código correspondiente a su archivo CS asociado.

Deshabilitado: Los archivos ASPX se compilan y por lo tanto, no se puede ni ver ni modificar su código en la web una vez ésta está generada.

  • Utilizar nomenclatura fija y ensamblados de una sola página

Habilitado: Se genera un ensamblado por cada una de las páginas, por lo que se debe limitar el número de páginas del proyecto. El nombre de cada ensamblado se corresponde con la ruta virtual de la página, y en caso de que esta sea excesivamente larga, con un código HASH. El nombre de los ensamblados siempre es el mismo.

Deshabilitado: Se genera un ensamblado por cada lote de archivos (en función de la carpeta en que esté, etc.). El nombre de los ensamblados de lote varía cada vez que se realiza una publicación.

  • Habilitar nombre seguro en los ensamblados precompilados

Habilitado: Permite que se especifique un archivo de claves para generar los nombres de los ensamblados y poder asegurar que no se han alterado.

Deshabilitado: Los nombres se general de forma normal.

Ahora, si hemos utilizado el namespace ASP, al ir a realizar la publicación de un sitio Web, debemos tener en cuenta lo siguiente:  el namespace ASP se asigna por defecto a las clases vinculadas a los archivos de interfaz (ascx, aspx, etc.)  Si realizamos alguna llamada en nuestro código a este namespace en la publicación, si marcamos la opción Permitir que este sitio precompilado se actualice, se producirá un error de este estilo:

El tipo o el nombre del espacio de nombres ‘nombreControl’ no existe en el espacio de nombres ‘ASP’ (¿falta una referencia de ensamblado?)

Para solucionarlo, tenemos las siguientes opciones:

  • Desmarcar la opción Permitir que este sitio precompilado se actualice.
  • Utilizar un ensamblado propio.

Para utilizar un namespace propio en lugar del namespace ASP, deberemos indicar en el archivo control.ascx el nombre del nuevo namespace, forzando de esta manera que se utilice nuestro namespace en lugar del namespace por defecto:


Por otro lado, en el archivo que contiene la clase asociada, control.ascx.cs, indicaremos el namespace:

namespace Proyecto.NameSpacePropio
{
public partial class control : System.Web.UI.UserControl
{...

Y por último, en el archivo donde hacíamos referencia al namespace ASP, incluiremos una referencia al nuevo ensamblado:

using Proyecto.NameSpacePropio;

Más sobre: ASP.NET | Tags: , , , , ,