Como crear una Pagina de inicio de sesion con ASP .NET

julio 29, 2008

Introduccion

ASP .NET provee varios metodos usados por una aplicacion para auntenticar a un usuario que solicita el acceso a un recurso restringido estos metodos son:

* Windows
*Forms
*Passport
*None

Para este ejemplo el metodo que se utilizara sera el modo de autenticacion por Forma o Forms Authentication. Los usuarios se validan contra sus credenciales en una fuente de datos. Forms Authentication proporciona un mecanismo muy flexible de definir los diferentes tipos de usuarios y permisos.

Paso a Paso.

Lo primero que se debe hacer como es logico es crear un nuevo proyecto WEB para esto iremos al menu Archivo -> Nuevo -> Sitio web y seleccionamos la Opcion “Sitio Web ASP .NET”. Lo siguiente que se debera hacer es cambiar el nombre de WebForm que creaa por defualt Visual Studio “Default.aspx” por “Login.aspx”. Despues de haber cambiado el nombre del WebForm añadiremos un control “Login” del cuadro de herraminetas, despues de haber añadido el control Login lo convertiremos en una platilla.

Acontinuacion compilaremos nuestro Sitio web (F5) para que agrege el Archivo Web.config al momento de compilar aparecera un cuadro de dialogo donde preguntara si desea agregar el archivo Web.config:

Lo siguiente es cerrar la aplicacion web y despues abrir el archivo Web.confing desde el explorador de soluciones y a continuacion reemplazar el siguiente codigo:

<authentication mode=Windows/>

por el siguiente codigo:

<authentication mode=Forms>
<forms name=“.AuthenticationCookieloginUrl=Login.aspxprotection=Alltimeout=60path=/“>
<credentials passwordFormat=Clear>
<user name=”beto0opassword=123456/>
<user name=”Tompassworrd=654321/>
</credentials>
</forms>
</authentication>

Donde los tags  <user name=”beto0opassword=123456/> en la parte name sera el nombre de usuario con el que se logeara el usuario y password sera la contraseña del usuario.

El siguiente paso es escribir el codigo para validar al usuario que se desee logear en la pagina. Lo primero que debemos hacer es ir al evento Click del boton del control Login que anterior mente agregamos al WenForm y escribier el siguiente Codigo:

protected void LoginButton_Click(object sender, EventArgs e)
{
if (FormsAuthentication.Authenticate(Login1.UserName, Login1.Password))
{
Session["login"] = “true”;
Login1.FailureText = “Usuario Aceptado”;
Response.Redirect(“Default.aspx”);
}
else
{
Login1.FailureText = “Error al iniciar Sesion”;
}

}

Despues en el Evento Load del WebForm escribimos el siguiente codigo:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Session["login"] = “false”;
}
}

Lo siguiente que se debe hacer es agregar un nuevo formulario web degar el nombre por default “Default.aspx”, despues agregar un control Label y en el evento Load del nuevo formulario escribir el siguiente codigo:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string sesion = Convert.ToString(Session["login"]);
if (sesion == “true” )
Label1.Text = “Usuario Aceptado”;       }
else{
Label1.Text = “Esta pagina solo puede ser accedida por usuarios registrados”;
}
}


Llamadas asicronas a un Xml Web Service

julio 24, 2008

Introduccion

Una llamada asincrona a un servicio web es muy util porque al momento se hacer la llamada al servicio web desde nuestra aplicacion (en el caso de este ejemplo sera una aplicacion Windows) no se quedara colgada esperando la respuesta del servicio web. AL hacer una llamada asicncrona a un servicio web la aplicacion hace la peticion al servicio web y esta no se queda esperando la respuesta del servicio web si no que el control del programa vuelve a la aplicacion pudiendo efectuar otras tareas en la aplicacion mientras la respuesta del servicio web llegua a la aplicacion.

Paso a Paso

Lo primero que debemos hacer es crear nuestro Web Service con Visual Studio 2005. Nos vamos al menu Archivo ->Nuevo ->Sitio Web despues de aver hecho lo anterior en el cuadro de dialogo elegimos la opcion Servicio Web ASP .NET.

Una vez seleccionada la platilla para el servicio web, en ubucacion seleccionamos la opcion HTTP para que nuestro servico web se guarde dentro de nuestro IIS y despues seleccionar un nombre para el servicio web en nuestro caso se llamara http://localhost/WebService y en Lenguage seleccione el lenguage de su gusto en este caso usaremos C#.

Una vez creado el servicio web ponemos en comentarios el metodo “Hello World” del servicio web que tiene por default:

[WebMethod]
public string HelloWorld() {
return “Hola a todos”;
}

Una vez comentado quedar ade la siguiente Forma

//[WebMethod]
//public string HelloWorld() {
//   return “Hola a todos”;
//}

Una vez comentado el metodo “Hello World” creamos nuetro propio metodo para este ejemplo crearemos un metodo que reciva un parametro de tipo double y regrese el cuadrado de este. Lo primero que se debe de hacer para crear un metodo dentro de un servicio web es anteponer la sentencia: [WebMethod] lo que indica que el metodo siguiente es un metodo del servicio web.

[WebMethod]
public double Cuadrado(double val)
{
return Math.Pow(val, 2);
}

Lo siguiente que se debe hacer es compilar el servicio web (F5) pero en este caso como lo guardamos dentro de nuestro IIS lo compilamos con Ctrl+F5 una vez que haya creado copiamos las URL del servicio web en esta caso sera: “http://localhost/WebService/Service.asmx”.

Ya una vez creado nuestro sevivio web el siguiente pasa es crear nuestra aplicaion windows para consumir  el servicio web antes creado. para crear la aplicacion web nos vamos al menu Archivo->Nuevo->Proyecto y en el cuadro de dialogo escogemos la opcion “Aplicacion para Windows”.

Una vez creada la aplicacion para Windows agregamos una referencia web para asi hacer referencia al servicio web que antes creamos. Para agregar la referencia web hacemos click con boton derecho en el proyecto en el explorador de soluciones para este ejemplo se llamara “WindowsApplication1″ y elegimos la opcion Agregar referencia web:

Despues se abrira el siguiente cuadro de dialogo donde pegarmos la URL del servicio web que creamos anterior mente.

En la parte de Direccion URL pegaremos la direccion URL de nuestro web service, despues
daremos click en el boton “Ir”, una vez que demos click en “Ir” la caja de texto del nombre del servicio web y el boton “Agregar Referencia” se activaran para este ejemplo el nombre del servicio web lo dejaremos tal y como esta: “localhost” y finalemnte deremos click en “Agregar referencia”

El siguiente paso es agregar un control TextBox, Button y un Label en el formulario de nuestra aplicacion windows, seguido de esto en el codigo de la aplicacion importaremos nuestro servicio web haciendole un “using” en la parte del los “using’s”

using System.Windows.Forms; //codigo por defualt del Visual Studio
using
WindowsApplication1.localhost; //Parte donde importamos el servicio web

Una vez importado el serviocio web en el evento Click del Button que agregamos al formulario agregamos el siguiente codigo:

private void button1_Click(object sender, EventArgs e)
{
//Creamos una instancia del servicio web
Service objService = new Service();

objService.CuadradoCompleted += new CuadradoCompletedEventHandler(objService_CuadradoCompleted);

//Llamada asincrona al servicio web
objService.CuadradoAsync(
Convert.ToDouble(textBox1.Text));
}

Despues de agregar el codigo anterior al evento click del boton agregamos el siguiente metodo el cual.

void objService_CuadradoCompleted(object sender, CuadradoCompletedEventArgs e)
{
//Asignamos al control Label el resultado de la ejecucion del servicio web
label1.Text = El cuadrado de ” + textBox1.Text + ” es: ” + Convert.ToString(e.Result);
}
y por ultimo ejecutar la aplicacion para verifcar el resultado

Cabe mencionar que los metodos del servicio web pueden ser mas complejos que los del ejemplo tal y como pueden ser como obtener datos de una base de datos etc.


Ultimo dia en el TEC LAGUNA

julio 24, 2008

Foto del ultimo dia de clases de toda la carrera en el TEC LAGUNA


Como crear una galeria de fotos con ASP .NET

julio 24, 2008

Para crear una galeria de fotos el primer paso que se debe hacer es crear un nuevo proyecto con visual studio 2005 que sea un sitio web.

Despues de haber creado el sitio web en el WebForm (Default.aspx) que crea por default Visual Studio

en el modo de codigo:

añadir el siguiente codigo entre los tags <div> </div>

<table>
<tr>
<td>
Selecciona la galería que deseas ver:<br />
<asp:DropDownList ID=”cboGallery” runat=”server”            AutoPostBack=”True”OnSelectedIndexChanged=”cboGallery_SelectedIndexChanged”>
</asp:DropDownList>
<asp:DataList ID=”dlsGallery” runat=”server” RepeatColumns=”5″>
<ItemTemplate>
<table>
<tr>
<td style=”border-style:solid; border-width:1px; width:150px; height:150px; text-                  align:center;”>
<a href=”Images/Gallery/<%#Eval(“GalleryID”)%>/<%#Eval(“FileName”)%>”                          target=”_blank”>
<asp:Image ID=”imgGallery” runat=”server” Height=”50px” Width=”50px”
ImageUrl=
‘<%#fnFilePath(DataBinder.Eval(Container.DataItem,”GalleryID”).ToString(),
DataBinder.Eval(Container.DataItem,”FileName”).ToString()) %>’ />
</a>
<p style=”text-align:center;”>
<a
href=”Images/Gallery/<%#Eval(“GalleryID”)%>/<%#Eval(“FileName”)%>” target=”_blank”>
<asp:Label ID=”lblFileDesc”
runat=”server”
Text=’<%#Eval(“FileDescription”)%>’></asp:Label>
</a>
</p>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList><br />
<asp:Label ID=”lblMessage” runat=”server” Text=”"></asp:Label>
</td>
</tr>
</table>

En modo diseño quedara algo parecido:

Importar los Siguientes espacios de nombres

using System.IO;

using System.Data;

Despues añadir el siguiente codigo dentro del archivo Default.aspx.cs:

//Dentro de la carpeta  Gallery añadir carpetas con las fotografias que se deseen mostrar

string varGalleryFolder = “C:\\inetpub\\wwwroot\\images\\Gallery”;

protected void GetFolders(string prmFolder)
{
try
{
if (Directory.Exists(prmFolder))
{
string[] arrFolders;
arrFolders = Directory.GetDirectories(prmFolder);
foreach (string dir in arrFolders)
{
ListItem lst = new ListItem(dir.Substring(prmFolder.Length + 1),
dir.Substring(prmFolder.Length + 1));
cboGallery.Items.Add(lst);
}
}
else
{
lblMessage.Text =
“No existe el directorio de imágenes”;
}
}
catch (Exception ex)
{
lblMessage.Text = ex.Message;
}
}

protected void GetFiles(string prmFolder)
{
try
{
string[] arrFiles;
arrFiles = Directory.GetFiles(prmFolder, “*.jpg”);
DataSet dsGallery = new DataSet(“dsGallery”);
DataTable taFile;
DataRow rwFile;
//DataColumn colFile;
taFile = dsGallery.Tables.Add(“Files”);
taFile.Columns.Add(“GalleryID”, varGalleryFolder.GetType());
taFile.Columns.Add(“FileName”, varGalleryFolder.GetType());
taFile.Columns.Add(“FileDescription”, varGalleryFolder.GetType());

foreach (string file in arrFiles)
{
//aqui llenamos el Dataset

rwFile = taFile.NewRow();
rwFile["GalleryID"] = prmFolder.Substring(varGalleryFolder.Length + 1); ;
rwFile["FileName"] = file.Substring(prmFolder.Length + 1);
rwFile["FileDescription"] = file.Substring(prmFolder.Length + 1);
taFile.Rows.Add(rwFile);
}

dlsGallery.DataSource = dsGallery.Tables["Files"];

if (dsGallery.Tables["Files"].Rows.Count == 0)
{
lblMessage.Text = “No se encontraron imágenes”;
}
else
{
lblMessage.Text = “Se encontraron “ +
dsGallery.Tables["Files"].Rows.Count.ToString() +” imágenes”;
}
dlsGallery.DataBind();
dsGallery.Dispose();
}
catch (Exception ex)
{
lblMessage.Text = ex.Message;
}
}

protected string fnFilePath(string prmPath, string prmFileName)
{
return (“imagenes/Gallery/” + prmPath + “/” + prmFileName);
}
//Evento Load del WebForm
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
GetFolders(varGalleryFolder);
GetFiles(varGalleryFolder + “\\” + cboGallery.SelectedValue.ToString());
}
}
catch (Exception ex)
{
lblMessage.Text = ex.Message;
}
}

//Evento SelectedIndexChanged del DropDownList
protected void cboGallery_SelectedIndexChanged(object sender, EventArgs e)
{
GetFiles(varGalleryFolder + “\\” + cboGallery.SelectedValue.ToString());
}


Seguir

Get every new post delivered to your Inbox.