Cómo encontrar el Id de un registro recién insertado en una tabla de SQL Server

En una aplicación asp.net algunas veces necesitas encontrar el Id del registro recién insertado para utilizarlo en otra operación.

En este ejemplo voy a suponer que tienes un DAL y un BLL, es decir, un archivo con terminación .xsd y un archivo con terminación .vb.

En el “TableAdapter” de tu archivo xsd crea una nueva consulta y pon lo siguiente:

INSERT INTO [MiTabla] ([Campo1], [Campo2])
OUTPUT INSERTED.IdMiTabla
VALUES (@Campo1, @Campo2)

Nota la segunda línea, ésta hace que el valor de salida de tu consulta NO sea el número de registros afectados, sino el valor del Id del registro recién insertado.

Pero para que esto funcione falta una cosa más: en tu archivo xsd selecciona la consulta en tu “TableAdapter” y abre sus propiedades. Ahora establece la propiedad “ExecuteMode” a “Scalar”, así:

scalar

Listo, suponiendo que a tu “TableAdapter” le diste el nombre “InsertarYRegresarElUltimoId”, ahora en tu BLL utiliza un código similar a este:

Dim UltimoId As Integer = Adapter.InsertarYRegresarElUltimoId(Campo1, Campo2)

El valor guardado en la variable “UltimoId” será el correspondiente al Id recién insertado y ahora lo puedes usar para las demás operaciones que vas a hacer.

Cómo evitar que la página haga scroll al inicio al oprimir un botón en asp.net

Al tener un formulario dentro de un control de usuario (.ascx), y éste a su vez dentro de una página asp.net (.aspx), puede ocurrir que los botones que se encuentran en la parte media o baja de la página, al ser cliqueados, mandan el scroll del navegador hasta arriba.

Por ejemplo, si tienes un formulario con un validador que está haciendo que el formulario no se pueda enviar, la página se irá al inicio de golpe y el usuario no podrá ver el mensaje de error, y no sabrá qué ocurrió.

Para evitar que esto ocurra, simplemente coloca este código javaScript dentro del tag “head”:

window.scrollTo = function () { }

Y listo, así se soluciona.

Cómo usar la herramienta de configuración de asp.net sin Visual Web Developer 2010

Cuando usaba Visual Web Developer 2010 tenía esta herramienta para crear usuarios y roles del membership:

Ahora bien, si ya te cambiaste a Visual Studio 2013 for Web, habrás notado que quitaron esta opción.

Si quieres correr la herramienta de configuración aún lo puedes hacer en dos pasos sencillos.

Primero, abre un command prompt (sin permisos de administrador) y teclea lo siguiente:

"C:\Program Files\IIS Express\iisexpress.exe" /path:c:\windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles /vpath:"/asp.netwebadminfiles" /port:8089 /clr:4.0 /ntlm

En caso de que no cuentes con IIS Express, lo puedes descargar de aquí.

No cierres la ventana oprimiendo la tecla ‘q’. Déjala abierta. Esto mantiene corriendo el servidor web al que te vas a conectar.

Ahora, abre un navegador y teclea lo siguiente:

http://localhost:8089/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=[Ruta_Exacta_A_La_Aplicacion]\&applicationUrl=/

Por ejemplo, si tu aplicación está en c:\miapp, teclearías lo siguiente:

http://localhost:8089/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=c:\miapp\&applicationUrl=/

Y listo, ya tienes acceso a la tan extrañada herramienta para crear rápidamente usuarios y roles.

Nota: Si te pide usuario y contraseña, es la misma con la que te logueas a tu PC o servidor.

Referencias:
http://blogs.msdn.com/b/webdev/archive/2013/08/19/asp-net-web-configuration-tool-missing-in-visual-studio-2013.aspx
http://stackoverflow.com/questions/20541680/visual-studio-2013-and-asp-net-web-configuration-tool/20555928#20555928

Cómo migrar los sitios web y app pools de IIS de un servidor a otro

Si quieres migrar la configuración de tus sitios web y pools de un servidor a otro utiliza este procedimiento.

Antes que nada, copia los archivos de tus sitios web de tu servidor original al nuevo.

Ahora abre un command prompt y ejecuta estos comandos en el servidor original (crea previamente la carpeta c:\migracion):

%windir%\system32\inetsrv\appcmd list apppool /config /xml > C:\migracion\apppools.xml

%windir%\system32\inetsrv\appcmd list site /config /xml > C:\migracion\sites.xml

Ahora abre estos archivos y quita las pools y los sitios web que no quieras copiar o sobreescribir en el servidor nuevo. Te recomiendo utilizar un editor de texto que reconozca los archivos XML para que puedas distinguir dónde empieza y termina cada elemento. Un buen editor es notepad++.

Ahora copia los dos archivos al nuevo servidor y ejecuta los comandos de restauración correspondientes. Aquí es importante el orden porque primero tienen que existir las pools para que los sitios se puedan crear.

%windir%\system32\inetsrv\appcmd add apppool /in < C:\migracion\apppools.xml 

%windir%\system32\inetsrv\appcmd add site /in < C:\migracion\sites.xml

Si te sale un error (a mí me salió el 80004005) es porque te al eliminar algún sitio o pool lo hiciste mal y desbalanceaste los tags de inicio y fin. Chécalo bien. Ahora cierra y abre tu IIS manager y ve cómo aparecen todos tus sitios y pools. 😀

Nota: Probado de un servidor IIS 8 a otro IIS 8. Fuente: Microsoft Pro