Cómo encontrar la extensión de un archivo subido mediante FileUpload

Si estás usando un control como este:

<asp:fileupload id="Imagen" runat="server">

Y necesitas conocer su extensión para realizar alguna validación, haz lo siguiente en tu código de servidor:

If System.IO.Path.GetExtension(Imagen.FileName).ToLower <> ".jpg" then
   'Pon aquí el código correspondiente
End If

En el ejemplo anterior estamos diciendo “Si la extensión del archivo NO es igual a “.jpg”, entonces…”.

Esto es útil combinándolo con un “CustomValidator” para revisar que solamente están subiendo imágenes, por ejemplo.

Cómo obtener el UserId del usuario logueado

Para obtener el UserID del usuario actualmente logueado, utiliza el siguiente código:

Dim UsuarioLogueado As MembershipUser = Membership.GetUser()
Dim ElGUID As Guid = UsuarioLogueado.ProviderUserKey
'Si lo necesitas como string utiliza ElGUID.ToString

En el ejemplo el UserId queda almacenado en la variable ElGUID que es de tipo Guid (Globally unique identifier).

Cómo asignar un mismo procedimiento a múltiples botones

Supongamos que por alguna razón quieres colocar dos botones en una página ASP.NET que ejecuten el mismo procedimiento. Por ejemplo, un largo formulario con dos botones para guardar los cambios, uno al inicio de la página, y otro hasta abajo.

Solamente tienes que escribir el código para uno de los botones, como normalmente lo harí­as.

Y para el segundo, establece el evento “OnClick” al procedimiento del primer botón.

Aquí­ tienes un ejemplo con los dos botones:

<asp:button id="Guardar" runat="server" text="Guardar cambios">
<asp:button id="Guardar2" runat="server" text="Guardar cambios" onclick="Guardar_Click">

¡Suerte!

Exclusive access could not be obtained because the database is in use

Intentas restaurar una base de datos desde un backup utilizando Microsoft SQL Server Management Studio y te aparece el siguiente error:

Restore failed for Server 'TuServidor'. (Microsoft.SqlServer.SmoExtended)
 System.Data.SqlClient.SqlError: Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.Smo)

Lo que ocurre es que la base de datos está abierta por otro proceso y debes cerrar todas las conexiones. Para hacerlo, abre una ventana de Query y coloca lo siguiente:

use master
go
alter database nombre_de_tu_base_de_datos set single_user with rollback immediate
alter database nombre_de_tu_base_de_datos set multi_user

Este script fue tomado de un excelente post escrito por Sergio Tarrillo, en el cual puedes encontrar soluciones adicionales para este problema.

Cómo hacer una página que cierre la sesión

Para cerrar sesión en una aplicación de ASP.NET puedes utilizar el control LoginStatus, sin embargo en ocasiones querrás que esto ocurra al acceder una página, por ejemplo CerrarSesion.aspx.  Para hacerlo coloca lo siguiente en el code-behind de dicha página:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   FormsAuthentication.SignOut()
   Session.Clear()
   Session.Abandon()
   Response.Redirect(FormsAuthentication.LoginUrl)
End Sub

Y listo, con eso cierras la autenticación, limpias y abandonas la sesión, y redireccionas a la página de login.