Actualizacion de Visual Source Safe 2005

Ha sido liberado una actualización de  Visual Source Safe 2005, que entre otras cosas de corregir unos bugs, también mejora la compatibilidad con Visual Studio 2008 y Windows Vista.

Por cierto si sólo han instalado Visual Studio 2008 y Visual Source Safe 2005, por defecto el add-in para Source Safe no se activa, debemos ir a Tools-> Options-> Source Control-> Plug-in Selection, y habilitamos Source Safe:

Pero recuerden instalar esta actualización para mejorar la compatibilidad con Visual Studio 2008.

Descarga: Visual SourceSafe 2005 Update.

Saludos,

Post cruzado

El buscador de IE, mas que un buscador…

En un post anterior, vimos como agregar otros proveedores de búsqueda basados en el QueryString…

Pues antes no me di cuenta que podemos explotar mucho mas este simple “buscador”, estaba validando unas webs en: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.w3.org%2F, y pues está también usa QueryString… así que ni cortos ni perezosos… realizamos un TEST: http://validator.w3.org/check?uri=TEST.

Y lo agregamos a nuestros providers de búsquedas:

Como pueden ver, también agregamos a NetCraft: http://uptime.netcraft.com/up/graph?site=http://geeks.ms. Y así podemos resumir que todo sitio donde soporte un QueryString, tenemos una puerta para entrar :), y ya no es sólo buscador, es validador, y detector de servers, y todo lo que ustedes quieran…

Por cierto para habilitar el descubrimiento de un buscador, puede revisar: ¿Tienes un buscador en tu portal? Esto te puede interesar…

P.D.: Y si hubiera algun web site donde el login sea el usarname concatenado con el password con un punto y que además soporte QueryString, nuestro buscador también la haría de Login xD!… simplemente el “poder de QueryString”?

Saludos,

Post cruzado

voy aprender .NET, VS2005 o VS2008?

Los que ya llevan usando Visual Studio 2005 (.NetFx 2.0) y están usando Visual Studio 2008 (.NetFx 3.5), se han podido dar cuenta que no hay un cambio radical en la forma de trabajo, que si lo hubo de Visual Studio 2003 (.NetFx 1.X), a Visual Studio 2005. Por ejemplo en ASP.NET, se consolido el page framework, con APIS para diversos servicios como Membership, Roles, Profiles, entre otros, basado en proveedores, más de 50 nuevos controles, nuevo modelo de acceso a datos, con enlace a datos declarativo, entre otras. Pero con VS2008 seguimos trabajando sobre el mismo Page Framework de ASP.NET, con algunos controles de más, y si mejoras en la herramienta para el desarrollo de aplicaciones Web.

Ahora, si vas aprender .NET, cualquier de estas dos herramientas (VS2005 o VS2008) es recomendable, lo que si no es recomendable es usar Visual Studio 2003, ya que esta versión trabaja sobre el .Net Framework 1.X, y hay un chorro de cosas que no tiene, y suele ser más brusco el cambio a .NetFx 2.0, de lo que es .NetFx 2.0 a .NetFx 3.5.

Y bueno si vas aprender .Net mi recomendación es usar Visual Studio 2008:

Los programas anteriores son de descarga GRATUITA, también podemos descargar la versión completa de Visual Studio en versión trial, pero con las versiones anteriores basta y sobra.

Algo a tener en cuenta, si van aprender .Net con C# 2008 Express, VWD 2008 Express, o VS2008, los tutoriales o los recursos que van usar son los que hay en la web para Visual Studio 2005, no busques “tutoriales” de ASP.NET 3.5 con Visual Studio 2008, ya que no los vas encontrar, a lo mucho lo que vas a encontrar son los tutoriales de ASP.NET 2.0, pero con las imágenes de fondo de Visual Studio 2008.

Por ejemplo si quieren aprender ASP.NET, y están buscando un Cursos o tutoriales de desarrollo Web con Visual Studio 2008, este curso es ideal: Desarrollo Web con ASP.NET 2.0 y Visual Studio 2005. Lo adicional que tenemos que revisar es: en el modulo de acceso a datos, podemos revisar Linq, LinqDataSource, Listview; por otro lado también revisar ASP.NET AJAX, también revisar el soporte para JavaScript, el uso de estilos, entre otras mejoras en la herramienta. Ah y me olvida de Silverlight.

Lo que si hay que reconocer en Visual Studio 2008, es la capacidad de crear diversos tipos de proyectos. Por ejemplo si con VS2005 queríamos desarrollar para .Net Framework 3.0, teníamos que hacer descargas adicionales, para trabajar con AJAX, Workflow o Sharepoint, también había que hacer varias descargas. Pero con Visual Studio 2008, lo tenemos todo, y bajo una sola instalación, también ya tiene incluido VS for Database Professionals, como dijo el Bruno, no es una revolución pero mola 😀.

P.D.: Ah y las certificaciones siguen siendo las mismas.

Saludos,

Post cruzado

Web Service Software Factory sobre VS2008 y Vista… y nunca dijo nada…

Si han estado instalando Guidance Automation Extensions (GAX) o Guidance Automation Toolkit (GAT) en Windows Vista, y en general imagino que debe pasar varios *.msi, se habrán topado con algunos errores al ejecutarlosI:

“The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2869”.

Y esto debido al UAC de Windows Vista, en algún momento de la instalación el *.msi necesita tener privilegios del Administrator, pero como no los tiene, se trunca. Una solución es crear un bat, con un shortcut a nuestro *.msi, y ejecutarlo en modo Administrator. La otra es que inicios la ventana de comandos con modo Administrator, y naveguemos hasta la carpeta donde está nuestro *.msi, pero la opción que más me gusto es:

Habilitar el “Run as Administrator”, en el menú contextual de los archivos *.msi a través del registro. En esta entrada pueden encontrar más detalles: MSI “Run as administrator” Context Menu for Vista, de esta misma entrada pueden descargar el zip con el archivo de registro para habilitar el “Run As”, en los MSI: MsiRunAsAdmin.zip:

Ya sabemos como hacer con los *.MSI, en Windows Vista… el siguiente reto es tener el Web Service Software Factory en Visual Studio 2008.

A ver veamos, para instalar Service Factory, necesitamos dos componentes GAX y GAT. Ingenuamente pensé que instalando GAX y GAT de Feb07, y el Service Factory de Dic06, los tendría disponibles en VS2008, pero no, sólo están disponibles para Visual Studio 2005.

Googleando un rato, descubrí que no era muda… si no, nunca dijo nada, encontré que se han liberado unas nuevas CTP de GAX y GAT (Jul07), con soporte para Visual Studio 2005 y Visual Studio 2008 Beta 2 (al instalar escoges sobre cual Visual Studio quieres instalarlas, no se si se puede instalar en las dos versiones a la vez). Las he instalado en Visual Studio 2008 versión final, no ha dado ningún problema, y tengo el Guidance Package en VS2008.

Nuevamente ingenuamente pensé que con instalar GAX y GAT de Jul07, podría instalar el Service Factory Dic2006, y usarlo con Visual Studio 2008, pero naranjas.

Después llegue a esta entrada de Guy Burstein: Software Factories Support for Visual Studio 2008, donde hace referencia a: patterns & practices: Upcoming Releases, donde nos cuentan que el Service Factory estará disponible para Visual Studio 2008, alrededor de febrero de 2008…

… y cuando todo estaba perdido, e iba a trabajar el Service Factory en VS2005, y los archivos generados los jalo a VS2008, hasta un nuevo release del Service Factory, encontré esta entrada: How-To: Smart Client Software Factory (SCSF) & Visual Studio Orcas Beta 2, de Ezequiel Jadib, y nada… no hay por que esperar hasta el release de febrero de 2008, usando la misma técnica que Ezequiel, pude instalar el Service Factory en VS2008, sólo he probado el paquete de Acceso a Datos del Service Factory, y funciona de maravilla :). Los otros paquetes no los he probado, ya que en mi caso sólo voy a usar el de acceso a datos, y funciona bien :D.

Voy a repetir los pasos de Ezequiel, resumidos, y en espaniol :D, pero aplicado al Service Factory:

  1. Instalar GAX y GAT de Jul07.
  2. Descargar Orca MSI Editor, que viene dentro de Windows SDK. El link anterior es un instalador Web, se necesita internet. Nota: para no esperar mucho tiempo por el Orca MSI Editor, y seguir con la angustia de no saber si funcionará el Service Factory en VS2008, no es necesario instalar todos los componentes, sólo podemos instalar Microsoft Windows Installer SDK:
  3. Abrimos el archivo MSI del Service Factory-Dec06, en este momento no esta disponible la descarga de Dic06, desde CodePlex también se puede descargar, pero yo he usado la versión Dic06.
  4. Seleccionamos la tabla RegLocator.
  5. Modificamos los valores de la columna Key, de 8.0 a 9.0, de las siguientes firmas: FindVSInstallDir, y GAX11VSIPRegistry. No se si hay que cambiar más, pero a mi me funciono el paquete de acceso a datos, sólo cambiando esas dos:
  6. Guardar los cambios.
  7. Instalar el Service Factory Dec2006.
  8. Y ya tenemos el Service Factory en Visual Studio 2008:

 

P.D.: Aupa “Ladrones Sueltos“, ellos también cantan Rubia en el Avión, tantos años engañado pensando que era de Arena Hash :$.

Saludos,

Post cruzado

Reflector, chiquito pero poderoso

Reflector es una herramienta que existe desde hace años, y que llega a formar parte de las herramientas básicas de un dev.Net. Voy a mostrar la herramienta, para los que no la conocen aún, y dar otros detalles. Además que piensa usar Reflector en otras entradas.

Primero vemos el siguiente gráfico:

Cada vez que hacemos un Build, lo que hace VS es generar un *.exe en caso de aplicaciones ejecutables, *.ddl en caso de librerías. Pero en si estos ensamblados, no son programas que puedan correr por si solos, ya que están en código MSIL (Microsoft Intermediate Language), y el CLR es quién hace la compilación de MSIL, para llevarlo a lenguaje de máquina.

Esta es la magia por la que puedes construir una libraría en Visual Bascic (es compilado por vbc.exe y llevando a un *.dll en código MSIL), y puedes construir un cliente en C# (es compilado por csc.exe a un *.exe en código MSIL) que consuma esa libraría creada con Visual Bacic. Al final lo que compiles de cualquiera de estos dos lenguajes será llevado MSIL, y el CLR hace el trabajo final.

¿No me creen?, vayamos a la ventana de comandos de Visual Studio, y escribamos: ildasm. Y abrimos una dll o exe de .NET:

Ven?, eso es el código MSIL. Podríamos así examinar las diversos compilados de .NET, y ver el código fuente, pero aún es ilegible entender el código rápidamente.

Pues reflector, lo que haces es desensamblar el código MSIL, y llevarlo a código .NET:

En la imagen estamos usando Reflector, para ver el código fuente del mismo Reflector.exe, aunque el autor, Lutz Roeder’s, se ha tomado la molestia de ofuscar el código.

Los lenguajes soportados actualmente son: C#, Visual Basic, Delphi, MC++, Chrome, y el mismo IL. Y también da la posibilidad de elegir la versión de .Net Framework sobre la cual va a mostrar las librerías del mismo .Net Framework. La navegación entre clases también es bastante buena.

Una excelente herramienta, y que cuando empiecen a usarla, formará parte de sus herramientas de cabecera.

Descarga de Reflector (actualmente en su versión 5.0).

Saludos,

Post cruzado

features de IIS 7 en las versiones de Windows Vista

Revisando algunos de sus comentarios, preguntaban sobre la lista de features de IIS 7 sobre las diversas funciones de Vista. Y que debido alguna de estas, habilitan el uso de IIS 7, como servidor Web ASP.NET y también poder instalar Reporting Services.

A = Available
D = Default
N = NA
U = Unlimited

S = Server (Windows Server 2008)
P = Professional (Vista Business, Enterprise, and Ultimate Editions)
M = Premium (Windows Vista Home Premium)
B = Basic & Starter (Windows Vista Starter and Home Editions)

En Premiun y Basic & Starter, como no hay “Windows Authentication” no hay Reporting Services, salvo que por ahí haya algún parche o algo por el estilo.

También podemos mencionar que Basic & Starter, no soporta ASP.NET.

Display Name Package Update Name S /  / M / B
Common HTTP Features IIS-CommonHttpFeatures D / D / D / D
• Static Content IIS-StaticContent D / D / D / N
• Default Document IIS-DefaultDocument D / D / D / N
• Directory Browsing IIS-DirectoryBrowsing D / D / D / N
• HTTP Errors IIS-HttpErrors D / D / D / D
• HTTP Redirection IIS-HttpRedirect D / D / D / D
     
Application Dev Features IIS-ApplicationDevelopment D / D / D / D
• ASP.NET IIS-ASPNET A / A / A / N
• .NET Extensibility IIS-NetFxExtensibility D / D / D / D
• ASP IIS-ASP A / A / A / N
• CGI IIS-CGI A / A / A / N
• ISAPI Extensions IIS-ISAPIExtensions A / A / A / N
• ISAPI Filters IIS-ISAPIFilter A / A / A / N
• Server-side Includes IIS-ServerSideInclude A / A / A / N
     
Health and Diagnostics IIS-HealthAndDiagnostics D / D / D / D
• Http Logging IIS-HttpLogging D / D / D / D
• Logging Tools IIS-LoggingLibraries D / D / D / D
• Request Monitor IIS-RequestMonitor D / D / D / D
• Tracing IIS-HttpTracing D / D / D / D
• Custom Logging IIS-CustomLogging A / A / A / N
• ODBC Logging IIS-ODBCLogging A / A / N / N
     
Security IIS-Security A / A / A / A
• Basic Authentication IIS-BasicAuthentication A / A / A / N
• Windows Auth IIS-WindowsAuthentication A / A / N / N
• Digest Auth IIS-DigestAuthentication A / A / N / N
• Client Cert Mapping Auth IIS-ClientCertificateMappingAuth A / A / N / N
• IIS Client Cert Mapping Auth IIS-IISCertificateMappingAuth A / A / N / N
• URL Authorization IIS-URLAuthorization A / A / A / A
• Request Filtering IIS-RequestFiltering A / A / A / A
• IP Security IIS-IPSecurity A / A / A / A
     
Performance Features IIS-Performance D / D / D / D
• Static Compression IIS-HttpCompressionStatic D / D / D / D
• Dynamic Compression IIS-HttpCompressionDynamic A / A / A / A
     
Web Management Tools IIS-WebServerManagementTools D / D / D / D
• IIS Management Console IIS-ManagementConsole D / D / D / N
• IIS Management Scripts and Tools IIS-ManagementScriptingTools A / A / A / A
• IIS Management Service IIS-ManagementService A / A / A / N
• IIS 6 Management IIS-IIS6ManagementCompatibility A / A / A / A
• • Metabase Compat IIS-Metabase A / A / A / A
• • IIS 6 WMI Compat IIS-WMICompatibility A / A / A / N
• • IIS 6 Scripting Tools IIS-LegacyScripts A / A / A / N
• • IIS 6 Manager IIS-LegacySnapIn A / A / A / N
     
FTP Publishing Service IIS-FTPPublishingService A / A / N / N
• FTP Server IIS-FTPServer A / A / N / N
• FTP Management Console IIS-FTPManagement A / A / N / N
     
Windows Activation Service WAS-WindowsActivationService A / A / A / A
• Process Model WAS-ProcessModel D / D / D / D
• .NET Environment WAS-NetFxEnvironment A / A / A / A
• Configuration APIs WAS-ConfigurationAPI A / A / A / A
     
Connection Limit(s)   U /10 / 3 / 3

La mayores detalles puede revisar el siguiente artículo en la web de www.iis.net: IIS7 Features and Windows Vista Editions, aunque no se porque hicieron tan feo y poco usabilidad el cuadro de la página 2.

P.D.: Si van a piratear el cuadro, coloquen la fuente :D, ya que he tenido hacerlo manualmente 8-).

Saludos,

Post cruzado

SQL Database Publishing ahora en Visual Studio 2008

Ya hemos hablando de esta excelente herrramienta, que nos permite generar archivos script (con soporte para SQL Server 2000 y SQL Server 2005), de nuestra base de datos. Podemos escoger en generar sólo la estructura de nuestra base de datos, o generar los querys necesarios para insertar la data, o ambos, generar un script con la estructura y con la querys para la inserción de la data.

Ahora ya tenemos esta herramienta incluida Visual Studio 2008:

También esta disponible en Visual Web Developer Express.

Esta herramienta también la uso para actualizaciones de base de datos, de desarrollo a pruebas, y también puede ser usado de pruebas a producción, dependiendo de la cantidad de la data (en la versión pasada encontré límites en el tamaño del archivo, por ejemplo con la data de Adventure Works, se truncaba, ya que el archivo de data pasaba mas de 150 MB, creo). Muchas veces no sólo cambias store procedures (que imagino lo tiene en archivos), también cambias la estructura, o solamente los cambios son tantos cambios que no te acuerdas cuales fueron. Y como haces la actualización de la nueva estructura con los SPs, sin perder la data de pruebas?.

Lo que hago con esta herramienta es generar un script con la data (sin estructura) de pruebas: DBPruebas_Data.sql, hago un backup de la base de datos de desarrollo, reemplazo la base de datos de pruebas con la base de datos desarrollo. Y sobre esta base de datos corro el script DBPruebas_Data.sql, si habido un cambio de columna(tipo dato, remove, o add), la ejecución del query se truncará, buscamos el error, lo corregimos, y volvemos a ejecutar el query, hasta que no hayas errores y todo este successfull.

Revisen esta entrada: SQL Database Publishing wizard is now in Visual Studio 2008, en el blog de Web Developer team de MS, y también esta otra entrada: Tip/Trick: How to upload a .SQL file to a Hoster and Execute it to Deploy a SQL Database, del gran ScottGu’s. La primera es una guía de como usar la herramienta, y la segunda nos enseña como crear una página aspx, para la ejecución de nuestro query generado directamente por la aplicación web (algo así hace dotnetnuke, o hacía, hace tiempo que no reviso las últimas versiones).

P.D.: Casi me olvide, ustedes se preguntarán si es necesario abrir Visual Studio 2008 cada vez que necesitemos ejecutar esta herramienta?, no se esponjen, también podemos encontrar la herramienta en la siguiente ruta: C:Program FilesMicrosoft SQL Server90ToolsPublishing1.2SqlPubWiz.exe, ya si quieren, le agregan un acceso directo a la barra de inicio rápido.

Saludos,

Post cruzado

preguntas sobre Crystal Reports o Reporting Services?

Hace tiempo publique una entrada sobre algunos links a tutoriales sobre Crystal Reports, ya que siempre veo preguntas en los foros. Me gustaría ayudarlos con las preguntas en esa entrada, pero a veces por cuestiones de tiempo no se puede estar en todas.

Se han llenado de preguntas esa entrada, que escapan al tema del post, aunque no puedo ayudarles directamente con sus preguntas, les voy a dejar una recopilación de foros de Crystal Reports y de Reporting Services.

Ya he comentado la ventaja de los foros, y estaría de más repetirlo nuevamente.

Foros en espaniol:

Foros en inglés:

Ahora no pueden decir, que no les quise ayudar xD, les ahorre el trabajo de buscar los foros :D. En los últimos ya no puse estadísticas porque son especializados en Crystal Reports.

Por otra lado, notan que el porcentaje de respuesta en inglés es mucho mayor que los foros en espaniol?, pues así es gente, hay que aprender inglés obligatoriamente, aunque no lo queramos aceptar, sin ingles es más difícil aprender algo relacionado al software.

Otra cosa que debemos aprender a cultivar, y si queremos que los foros en espaniol tengan la misma actividad de los foros en inglés, es que nosotros nos seamos participes de ellos. Es fácil llegar al foro, pedir un ejemplo o presentar una pregunta, que nos den la respuesta y no regresar nunca más al foro. La idea es, también que nos tomemos, (por lo menos un día del mes), un tiempito para revisar las preguntas no respondidas, quizás haya preguntas con problemas que nosotros ya hemos pasado y fácilmente podemos ayudarlos. Esa, creo, que será la única forma de aumentar la actividad en los foros en espaniol, pedir ayuda, pero también ayudar.

Y para ahorrarles otra pasta de tiempo, les voy a dejar traductores online para los que aún no hablan bien el inglish :D:

P.D: Dot not ask questions in the comments :D.

Saludos,

Post cruzado

Instalar un ASP.NET Starter Kit, paso a paso

Se lo debo a un amigo, y en general que sea para la comunidad. Por cierto, no voy a comentar sobre la estructura del Starter Kit a usar, sólo lo haré funcionar 🙂



  1. Buscar el starter kit que deseemos evaluar: http://www.asp.net/community/projects/. Voy a escoger un Starter Kit que aún no haya probado. Escogí: My Web Pages Starter Kit.

  2. Extraemos los archivos al directorio sobre el cuál vamos a trabajar, y en mi caso, renombro la carpeta, C:WebsWebPagesSK.

  3. Iniciamos Visual Studio o Visual Web Developer Express (descarga Gratuita). Nos vamos al menú File->Open->Web Site, y apuntamos a la carpeta donde esta el starter kit:

  4. Nota, si lo están abriendo con Visual Studio 2008 les preguntará si desean cambiar la versión del .Net Framework, sobre la cual se va trabajar, yo le voy a dar que si. Que por cierto, no me dejo hacer la actualización ya al extraer el Starter Kit estaba en modo sólo lectura. Si abren con Visual Studio 2005 o Visual Web Developer 2005, no preguntara nada:

  5. Haciendo sólo eso, ya podemos echarle un ojo a todos los archivos (como lo hicieron, que usaron) del Starter Kit, ye… ta en C#:

  6. Hagamos view in browser a la página default.aspx, crucemos los dedos y a ver si funciona :D:

  7. No puede ser, funciono. Me malogro el plan. Revisando el web.config, entenderemos por que funciona. Esta basado en providers de archivos xml, por eso no tenemos ningún problema :(.

  8. Pero no se ve nada más que el default.aspx, y el login. Iniciamos sesión con admin;admin, (casi un estándar en los Starter Kits), y podremos configurar el sitio.

  9. Cambiamos el Look & Feel, agregamos navegación, secciones, cambiamos el tema (hay varios para escoger):

  10. Subimos algunas imágenes, y o sorpresa, podemos cambiar la vista a Silverlight, o dejarla en html:

Como dicen en la página de descarga, este esta basado en archivos (recién leo eso, mejor, por que de repente ni lo revisaba 😀), y no en base de datos. Pero no por eso, se puede decir que no merece la pena revisarlo, cada Starter Kit tiene algo de bueno del cual podemos aprender.


Vamos hacer el intento de nuevo, para que no funcione un Starter Kit, y no quedar mal a la audiencia:



  1. Ahora vamos a descargar Personal Web Starter Kit.

  2. Al descargar vamos encontrar este archivo, alguna vez lo trataba como archivo zip y no pude instalarlo, sólo hacemos doble clic para su instalación:

  3. E instala plantillas para C# y para VB:

  4. Ahora abro Visual Web Developer Express 2008 (descarga Gratuita), y tengo una nueva plantilla para mis sitios web, escoge una ruta deseada, escogemos nuestro lenguaje favorito, escojan C#, y aceptamos:

  5. Nuevamente nos preguntará si deseamos actualizar la versión del .Net Framework sobre la cual vamos a trabajar. Lo que hace diferente un Web Site con ASP.NET 2.0 y Web Site con ASP.NET 3.5 no debería llamarse ASP.NET 3.5 por cierto, es el web config. Cuando instalamos el Starter Kit, lo instalo con el web.config al estilo ASP.NET 2.0, y es por eso que ahora nos lanza la pregunta, le decimos que si:

  6. Hacemos view in browser al default.aspx, y ahora si obtenemos lo que buscaba, manos a la obra :D:

  7. En algunos casos haciendo el View in Browser puede funcionar. Lo que pasa es la mayoría de los Starter Kit (sobre todo los que son instalables), trabajan con SQLExpress en modo attachfile. Si vamos a la carpeta App_Data dentro del sitio Web podemos ver el archivo Persona.mdf, para el modo attachfile de SQLExpress, pero por suerte también tiene los querys para crear la base datos:

  8. Abrimos los archivos que contienen los querys, con SQL Server Managment Studio, si no tienen una versión de SQL, pueden descargar de manera gratuita SQLExpress, y no se olviden de descargar Management Studio Express. El query que debemos ejecutar es personal-add.sql, como pueden apreciar este query no hace la creación de la base de datos, así que la podemos hacer por query, o con el asistente, llamamos a la base de datos: Personal.

  9. Si volvemos a ejecutar vamos a ver que tenemos el mismo problema. Revisemos el web.config. Como podrán apreciar hay una cadena de conexión por defecto, esta funcionaría siempre y cuando estemos usando SQLExpress, y además si no hubiésemos cambiado el nombre de la instancia en una instalación avanzada de SQL Express:

  10. Pero maquillando la cadena de conexión, recuerden que hay varios modos de poner la cadena de conexión, para nuestro escenario tendríamos algo así:

  11. Ahora ejecuto nuevamente mi página, y voy a obtener este otro error: “Could not find stored procedure ‘dbo.aspnet_CheckSchemaVersion’“:

  12. Lo que pasa es, y pasa lo mismo en la mayoría de Starter Kits, que este sitio soporta algunos de los servicios del Page Framework de ASP.NET, como el servicio de Membership y Roles, y aunque estos no están declarados en el web.config, se están haciendo un merge con el archivo machine.config, ubicado en la carpeta “C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIG”, y si revisan el contenido de este archivo se percatarán que este tiene un valor por defecto para la cadena de conexión LocalSqlServer, y también tiene un provider por defecto para el servicio de Membership y Roles, que usan la cadena de conexión LocalSqlServer. Si ustedes se fijan en la figura del paso 10, removemos la cadena LocalSqlServer, para agregarla nuevamente y así reemplazar a la que existe en el machine.config, pero noten que no es necesario hacer ninguna declaración en el web.config, para usar el servicio Membership, y esto debido a que eso ya esta configurando en el machine.config para trabajar con LocalSqlServer, sólo basta con reemplazar esa cadena de conexión y listo. Tendríamos que declarar el elemento membership en nuestro web.config, si queremos cambiar algún valor por defecto.

  13. Ahora tenemos que agregar el esquema, que no va hacer otra cosa que agregar tablas y SPs, necesario para que trabaje algunos de los servicios de APS.NET como Membership, Roles, entro otros. Nos vamos a la carpeta C:WindowsMicrosoft.NETFrameworkv2.0.50727, y ejecutamos el archivo aspnet_regsql.exe, que es sencillísimo de usar, este programita es que el agregará las tablas y SPs a nuestra base de datos:

  14. Ejecutamos nuevamente la página aspx, y ya tenemos la web funcionando (h):

Y eso, la instalación de los otros Starter Kits, es algo parecido. Ahora ya tienen muchos EJEMPLOS WEB para revisar y aprender :).


Saludos,


Post cruzado

MCPD 70-547: Validacion de data

Para que voy a poner validación, si mi aplicación no la va a visitar mucha gente“. “Ya ves, para que usas ASP.NET, yo te dije que te iban a salir esas pantallas amarillas“.


Y aquí, continuando con la serie MCPD. Hablar sobre los controles login en ASP.NET, estaría demás, hay 229,000 artículos sobre esto. Así que vamos a centrarnos en algunos detalles; y para saber como nos afecta el no usar validación a la seguridad, podemos leer al maligno, para darse cuenta, de las travesuras que hace la gente cuando esta ociosa 😀, de todos los peligros a los que esta expuesta una Aplicación Web.


Si no han visto los controles de validación de ASP.NET, les recomiendo darse una vuelta por aquí: Validation Controls, incluye documentación, ejemplos online, y el código de los ejemplos.


Como se sabe, siempre se recomienda hacer las validaciones del lado del cliente, si estas en el registro de un usuario y necesitas validar que el rango de edades esta entre el 18 y 30, no es necesario irse al servidor para validar eso, es suficiente con hacerlo del lado del cliente; agregando un control RangeValidator, lo asociamos a nuestros controles, le damos el rango de valores, el tipo de datos, y el se encargará de hacer el render necesario para generar el JavaScript que valida del lado del cliente el rango deseado. Pero hay momentos en que necesariamente tienes que hacer validaciones contra una base de datos, o contra valores en el web.config, por ejemplo tienes un campo para ingresar el número de documento de una persona, pero dependiendo del tipo de persona el número de dígitos varía.


Uno de los grandes controles de validación, es el control RegularExpressionValidator, que viene con algunas expresiones regulares para validar correo, dirección web, entro otros, y si queremos otras expresiones podemos visitar http://regexlib.com/, un gran repositorio de expresiones regulares. Pero lo interesante es poder usar expresiones regulares con valores de una base de datos, o de un archivo de configuración:



   1: if (!Page.IsPostBack)
   2: {
   3:    string nroDigitos = ConfigurationManager.AppSettings[“nroDni”];
   4:    RegularExpressionValidator1.ValidationExpression = 
   5:          string.Format(@”d{{{0}}}”, nroDigitos);
   6: }

Y con esto ya podemos explotar mucho mas al control RegularExpressionValitor. Notar que para formar el string estamos usando tres “{“, lo que pasa es que queremos usar a la llave “{” como operador para reemplazar un valor, pero además lo queremos usar como carácter “{“, y debido a eso debemos colocar “{{“, para indicar esa diferencia.


Digamos que ya tenemos validación en nuestra Aplicación Web, pero como sabe el usuario que debe colocar 8 dígitos o 6 dígitos, de alguna manera se debe proveer asistencia al usuario, hay que tratar en lo menos posible que tenga que consultar al administrador por una feature, y tratar de que la aplicación sea lo más intuitiva posible. Por ejemplo en un formulario, podemos sólo colocar asteriscos a los costados de las cajas de texto, pero el usuario no será adivino de saber que sólo se permite edades entre 20 y 28, el control ValidationSummary, nos ayudará a completar esta tarea.


Y con validaciones o no, siempre por ahí se puede escapar un muertito :D, es fácil echarle la culpa a Microsoft de los bonitas pantallas amarillas que a veces encontramos en la web. Para evitar esto, recuerden que podemos usar el elemento CustomErrors, para tener mensajes de error personalizados:



   1: <customErrors mode=”On” defaultRedirect=”Error.htm”>
   2:         <error statusCode=”403″ redirect=”NoAccess.htm” />
   3:         <error statusCode=”404″ redirect=”FileNotFound.htm” />
   4: </customErrors>


Bueno ya le di al usuario un mensaje más amigable, y no le mostré información que lo puede confundir, o que pueda afectar la seguridad de nuestra aplicación web. Pero, el admin o el webMaster como sabe que hubo error?, o que error fue?:



   1: void Application_Error(object sender, EventArgs e) 
   2: { 
   3:    // Code that runs when an unhandled error occurs
   4:    Exception ex = Server.GetLastError().GetBaseException();
   5:  
   6:    System.Diagnostics.EventLog.WriteEntry(
   7:         “Geeks.ms – Demos”,
   8:         “Hombre, que aquí esta tu error: ” + ex.ToString(),
   9:         System.Diagnostics.EventLogEntryType.Error);             
  10:  
  11: }

Pues nos vamos al archivo Global.asx, el que maneja los eventos de la aplicación, y con el código de arriba, ya tendremos en el EventLog los errores de nuestra aplicación:



Hay muchas otras opciones para registrar los errores, podemos también insertarlo a una base datos, u otra fuente de información que nosotros deseemos, existen algunas clases con esta funcionalidad, o también aplications bloks:



Algunos otros artículos sobre el manejo de errores:



Y por cierto, puedes descargar el código del ejemplo en el link de abajo :).


P.D.: Como dice el libro “Writing Secure Code“, el único capítulo que leí, “all input is evil, until proven otherwise”.


Saludos,


Post cruzado