jueves, 10 de febrero de 2011

Más diferencias entre sitio web o aplicación web

En un posterior post “Sitio web o aplicación web” enumeramos muchas de las diferencias que hay entre un sitio web y una aplicación web.

Hoy quisiera matizar dos de estas diferencias que me ha causado más de un dolor de cabeza, la primera es el distinto ámbito de visibilidad que se dan a los métodos de las páginas .aspx, y el segundo es como publicar correctamente ficheros de informe de Crystal Reports.

En un sitio web, el ámbito predeterminado para un nuevo método “manejador de un evento” que se crea al seleccionar un control y evento es Protected. Sin embargo, en una aplicación web el ámbito predeterminado es Private. En principio no hay mayor problema y todo funciona correctamente.

Sitio web

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

Aplicación web

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

Sin embargo, si tenemos la necesidad de enlazar el evento del botón desde el marcado en vez de con la instrucción Handles, nos encontramos con que en una aplicación web no es posible debido a que el método no es accesible desde el marcado por su visibilidad.

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

La solución es sencilla y pasa por cambiar Private por Protected, pero quedas avisado!

El otro problema que también quiero esclarecer es como publicar correctamente un fichero .rpt de Crystal Reports.

En un sitio web (y al no existe un fichero de proyecto .vbproj), todos los ficheros son incluidos automáticamente en el resultado de la publicación/precompilación. Sin embargo, en una aplicación web (y al existir un fichero de proyecto), todos los ficheros tienen propiedades que permiten especificar el comportamiento durante la publicación. Es decir, sólo en una aplicación web tendremos disponibles las siguientes propiedades por cada fichero.

clip_image001

Si precompilamos un sitio web, los ficheros .rpt son también compilados y en vez del original fichero .rpt nos encontramos en la salida con un fichero .rpt de marcador con el siguiente texto “Este es un fichero marcador generado por la herramienta de precompilación y que no se debería elimina”. Conclusión, nuestros informes no funcionarán cuando se publiquen.

La solución pasa por después de precompilado, borrar estos ficheros .rpt y sustituirlos por los originales que funcionarán felizmente en nuestro servidor.

Desconozco si hay más extensiones con las que suceda este problema, pero prometo ir actualizando este post según las vaya encontrado.

Por otro lado, si hablamos de una aplicación web, el compilador no incluirá en la salida los ficheros .rpt (bien, antes iban mal y ahora directamente ni están). Esto también pasa con ficheros .pdf, .docx, etc. Es decir, la aplicación web no los considerará “outputeables” (al loro con la palabra!) a no ser que se lo indiquemos.

La solución pasa por establecer por cada fichero que no se incluya, el valor “Siempre” para la propiedad “Copiar en el directorio de resultados”.

Un saludo!.

No hay comentarios:

Publicar un comentario