Archive for programación

Como subir ficheros de gran tamaño en ASP .Net

Estos días hemos tenido un par de consultas sobre un problema al subir ficheros mediante el componente File Upload de Asp .Net.

Y es que el framework "capa" las conexiones http pesadas (como, por ejemplo, cuando intentas subir ficheros de más de 1 Mega) por lo que da un error estrepitoso de Timeout.

¿Que podemos hacer para solucionar esto?

¡Fácil! Primero modificamos nuestro web.config permitiendo conexiones Http más pesadas:

  • Añadir esto al tag <system.web>
XML:
  1. <httpruntime executionTimeout="1200"
  2. maxRequestLength="102400"
  3. useFullyQualifiedRedirectUrl="false"
  4. minFreeThreads="8"
  5. minLocalRequestFreeThreads="4"
  6. appRequestQueueLimit="100" />

Esto aumenta el tamaño máximo de paquetes Http así como el tiempo de espera a nivel de nuestra aplicación web.

Por otro lado, por mucho que modifiquemos nuestro web.config, si hay restricciones en el servidor no nos funcionará.

Para ello tenemos que crearos un Inventario Dedicado (pool de asp .net privado para el dominio) en el que aumentaremos también estas parámetros.
Para modificar esto último es necesario que tengas acceso directo al servidor por lo que lo tendremos que hacer nosotros manualmente.

Con esto bastaría... y recuerda, ¡tienes que darle permisos de escritura a la carpeta donde quieres subir!

Un saludo!!

Comentarios

Descargar Visual Studio 2008 Express en Español

Ya está disponible para descarga la versión en Español de Visual Studio Express 2008.

Desde esta dirección: http://www.microsoft.com/express/download/default.aspx podeis descargaros las versiones gratuitas (Express) de cada uno de los lenguajes de programación (c#,j#, c++...) independientemente o bien una ISO de 3GB con todo el Visual Studio 2008 completo.

Recordad, para bajaros la versión en español teneis que escoger el idioma en el desplegable ya que por defecto sale en inglés ;-)

En domitienda.com estamos trabajando duro para poder ofreceros cuanto antes soporte para el framework 3.5. Esperamos poder tenerlo funcionando para finales de este mes... de todos modos cuando este listo os avisaremos desde el blog asi que estad atentos!!

Comentarios (1)

Publicar Aplicaciones Web en Asp .net 2.0

Muchas son las dudas de los nuevos programadores web al respecto de que hacer con su aplicación una vez terminada, ¿copio los ficheros en algun sitio ftp? ¿me llevo el proyecto entero? ¿como lo hago?

Visual Studio nos brinda una estupenda opción para lanzar nuestra aplicación a Internet: "Publicar Sitio Web" .

Primero de todo necesitamos un sitio web donde poder alojar nuestro proyecto. Con el Páquete Básico de Domitienda.com nos valdría para empezar ya que soporta Asp .net y Bases de Datos Sql Server 2005.

Una vez tenemos nuestros sitio web creado y conocemos nuestra información de acceso ftp nos vamos al Visual Studio, cargamos nuestro proyecto y nos vamos a Build > Publicar Sitio Web

publicar1.png

Una vez hecho esto veremos una pantalla en la que nos solicitarán que introduzcamos la ruta donde queremos dejar nuestra web publicada. Por defecto nos aparece una ruta local que debemos cambiar por una ftp.

Para ello pulsamos el boton de "Examinar" que aparece a la derecha de la ruta y seguimos las instrucciones de la siguiente imagen:

publicar2.png

- Servidor: Ip / Nombre de tu servidor ftp. En domitienda.com el formato es ftp.[tu dominio.com]

- Directorio: Carpeta dentro del ftp donde quieres publicar tu sitio web. En domitienda.com la raiz web es la carpeta httpdocs

- Nombre de Usuario y Contraseña: Los que creaste desde el Panel de Control Plesk

Pulsamos "Aceptar" y vamos que la ruta ha cambiado para dar lugar a una ruta ftp hacia el servidor web.

Volvemos a pulsar "Aceptar", se nos compila la aplicación y comenzará el proceso de Publicación.

¿Que hace exactamente la publicación?

Al publicar una aplicación web el propio Visual Studio detecta las dependencias de librerias que has usado en tu aplicación web , las compila y las sube automáticamente a la carpeta bin de tu sitio web.

Además empaqueta todo el Server Side Code (los .cs /.vb) en una dll para evitar que nadie tenga acceso al código fuente de manera directa.

Este es sin duda el método más seguro de subir una aplicación web en un servidor web ya que el mismo se encarga de dejar todos los ficheros en su sitio, compilarlo y prepararlo para su ejecución.

Comentarios (16)

Enviar Correo desde ASP con AspMail

Hace unos días os comentábamos como enviar un email desde asp usando uno de nuestros componentes: Jmail

Hoy le toca el turno a AspMail, otro de los componentes ASP instalados en el hosting de domitienda.com

Como vale más un ejemplo que mil palabras vamos a ello:

<%
'Creamos el Objeto <<mail>> de envio
Set Mail = Server.CreateObject("Persits.MailSender")
'Introducimos el nombre del servidor de correo desde
'el que vamos a enviar (o la IP) 'En el caso del hosting en domitienda el formato es el siguiente
' mail.[tu dominio.com]
Mail.Host = "mail.domitienda.com"
'Escribimos las credenciales para realizar el envio a servidores ajenos
'Usuario: cuenta de correo completa desde la que enviamos
Mail.Username = "victor@domitienda.com"
'Pass: Contraseña escrita en Plesk
Mail.Password = "1234passwordfalso"
'Cuenta de Correo DESDE la que enviamos
Mail.From = "victor@domitienda.com"
'Texto que aparece como Remitente del Correo
Mail.FromName = "Víctor Fernández. Domitienda"
'Cuenta de Correo A LA QUE ENVIAMOS (Destino)
Mail.AddAddress "cuentadestino@domitienda.com"
'Asunto del Mensaje
Mail.Subject = "Prueba ASPEmail"
'Cuerpo del Mensaje
Mail.Body = "Esto es una prueba a ver si va o no"
'Indicamos que el Correo se ha de añadir a la cola de envio
Mail.Queue=True
' ¡Lo enviamos!
Mail.Send
%>

Fácil, ¿verdad?
A programar se ha dicho!

Un saludo

Comentarios

Enviar correo desde ASP con JMail

JMail es uno de los componentes ASP instalados en el hosting de domitienda.com. Su uso es similar al CDONTS pero con más prestaciones. Permite enviar mails formateados en HTML desde tus páginas ASP.

Funcionamiento:

Definimos las variables necesarias

<% Dim ObjMail

Creamos una instancia del objeto de ' JMail ' en el servidor.

Set objMail = Server.CreateOBject("JMail.Message")

Una vez que el objeto de JMail se haya creado en el servidor podemos utilizar varias características y métodos del objeto de JMail para construir el email.

Vamos utilizar la propiedad from para dejar saber de quién es el email. Si no especificas esta propiedad o no tiene un formato correcto el email fallará.

objJMai.From = "E-mail@Domain.com"

La propiedad SenderName no es necesaria y se puede prescindir de ella. Esta propiedad se puede utilizar para especificar el nombre del remitente.

objJMail.FromName = "nombre"

En la propiedad AddRecipient se debe especificar la dirección de la persona que deseas que reciba el email. Ésta necesita ser una dirección de e-mail correctamente ajustada al formato, ( observa la carencia del = muestra )

objJMail.AddRecipient "Email@Domain.com"

La propiedad siguiente AddRecipientCC sirve para enviar copias a otras direcciones e-mail, puede enviar el e-mail a tantas direcciones como desee, introduciendo la característa tantas veces como a direcciones desee enviarla. Si la dirección no tiene un formato correcto el email fallará.

Esta característica se puede omitir si no desea enviar copias.

objJMail.AddRecipientCC = "otra@Domain.com"

Si desea enviar copias ocultas deberá utilizar la propiedad AddRecipientBCC

objJMail.AddRecipientBCC = "otra@Domain.com"

En la propiedad Subject se debe especificar el asunto del E-mail

objJMail.Subject = "E mail desde la Web"

El componente de JMail se puede utilizar para enviar el correo en texto llano o formato del HTML.

Para enviar un email en formato de texto llano utilizaremos la propiedad Body. Si deseán enviar un email en formato del HTML puede utilizar la propiedad HTMLBody o añadir una línea especificando la propiedad ContentType ="text/html" .

'Contenido del email en texto llanoobjJMail.Body = " hola. " & el vbCrLf &
" esto es mi email en formato de texto
llano "

'Contenido del email en Html existen dos posibilidades de especificarlo

'1)

objJMail.HTMLBody = "<body bgcolor='#C6D9EC' text='#000000'> "

'2)

msg.ContentType ="text/html"

msg.Body = "<body bgcolor='#C6D9EC' text='#000000'> "

'Para añadir más líneas utilizaremos
la propiedad appendText, tanto sea texto llano
como HTML

' vbCrLf , equivale a un retorno de carro (Intro)

objJMail.appendText "Enviado el " + CStr(now()) +" por :" & vbCrLf

msg.appendText " <p> <font face='Verdana, Arial, Helvetica, sans-serif' size='1'> el texto </font></p>"

La propiedad Priority dice el sistema la prioridad de este mensaje. Para esta propiedad se pueden especificar 3 valores.

  • 5 - Prioridad Baja
  • 3 - Prioridad normal
  • 1 - Prioridad Alta

Si no se establece el valor por defecto es 3.

objJMail.Priority = 3

Necesitamos especificar la dirección del servidor del smtp que usted está utilizando para enviar el correo.
Al estar en nuestro servidor deberían poner correo.nombre_desudominio

P.e: Si su dominio fuese elmio.com pondría correo.elmio.com

objJMail.Send (" correo.su_dominio ")

Finalmente una vez que se haya enviado el email debemos cerrar todas las variables creadas.

Set objJMail = nothing %>

¡Un saludo!

Comentarios

Sobre ViewState, MACValidation y MachineKey en asp .net

En ocasiones necesitamos que nuestras aplicaciones webs dispongan de una parte privada que sea accesible mediante la autenticación de un usuario.

Para ello ASP .Net nos ofrece multitud de componentes para implementar "zonas privadas" de forma rápida y sencilla.

Ya sea usando los Application Services o bien manualmente, el control de la sesión es algo necesario para que esto funcione correctamente.

La forma de implementarlo es sencilla (y no es el motivo de este post) el problema viene cuando intentamos realizar este tipo de validación en entornos compartidos (como es el caso de nuestro hosting en domitienda.com).

Pongamos un ejemplo:

Cuando realizas la validación de usuarios en entorno compartido (WebFarm o Cluster) se autogenera una machineKey como identificador para tu aplicación.

Una segunda aplicación web (alojada en el mismo servidor) realiza una validación de usuario con el mismo sistema y el pool por defecto le autogenera otra machineKey...¿que pasa cuando ambas machineKeys coinciden? Veriamos el siguiente error:

Validation of viewsate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. Autogenerate cannot be used in a cluster.

¿Os sis suena? Si es así no os preocupeis... tiene fácil solución.

Podeis usar cualquiera de estas soluciones:

  • Deshabilitar ViewState en el Web.Config:

Añade le siguiente código entre los tags <system.web>

<pages enableViewStateMac="false" />
  • Deshabilitar ViweState en la propia página:

Añade el siguiente código en la cabecera de la web aspx (entre los tags <% %>)

enableViewStateMac="False"
  • Indicar manualmente el MachineKey para tu aplicación:

En lugar de que el pool de asp .net nos genere un machineKey automaticamente podemos indicarle en el web.config que código queremos usar.

Para ello existe una herramienta web que nos generará un machineKey único para nosotros con un formato similar al siguiente:

<machineKey validationKey="2F9A2158572BBDC9DF12E8BB1E19BB12A6
69406F5F92A3A1972E0BE9ED886CE5D13A10696E5AEB52E46A905122D4889
E23109ECFDF231411AAB780A589CC0842" decryptionKey="26464B60C7F
B690349D918A6F02D0089A92C1F3AC3749881" validation="SHA1" />

Visita la siguiente web: http://aspnetresources.com/tools/keycreator.aspx y clickea sobre "Generate".

Con esto solucionamos el problema del ViewState en entornos compartidos.

Y recuerda, si te surge algún otro problema estamos esperandote en el PhpLive de domitienda.com

Comentarios (2)

Conectar a una Base de Datos Sql Server 2005 desde Asp .Net

Conectarse a una base de datos Sql Server 2005 puede ser una pequeña aventura para los principiantes en asp .net

Para ellos hemos pensado este pequeño tutorial que esperamos que sirva de ayuda a la hora de conseguir conectarse a una base de datos en el hosting de domitienda.com

El primer paso es crearnos la base de datos Sql Server 2005 vacia desde el Panel de Control Plesk.

Para ello iremos a Inicio > [tu dominio.com] > Bases de Datos > Crear Nueva Base de datos y creamos una BD vacia tal y como se ve en la imagen:

crear_bd.png

Tras hacer esto necesitaremos crear un usuario para el acceso a la misma.

new_user.png

Por ejemplo creamos el usuario "prueba" con pass "123456".

¡Ya tenemos nuestra primera base de datos Sql Server 2005 lista para ser usada!

¿Como puedo crear tablas en esta base de datos? Eso ya lo contamos :-P echa un vistazo a este post. Lo que nos interesa ahora es como conectar desde una aplicación Asp .Net con la recién creada base de datos Sql Server.

Para ello tenemos que definirnos en nuestro web.config una "Cadena de Conexión" (o connectionstring).

Las connectionstrings indican a la aplicación web la ruta que debe seguir para conectarse a una base de datos, sea del tipo que sea. En este ejemplo vamos a explicar como conectarnos con Sql Server 2005.

Para ello abriremos nuestro Web.Config y dentro del tag <configuration> añadimos el siguiente código:

<connectionStrings>

<add name="MiConnectionString"
connectionString="Data Source=sql1.servidoreswindows.net;
Initial Catalog=pruebaDomitienda_BD;
Persist Security Info=True;User ID=Prueba;
Password=123456"providerName="System.Data.SqlClient" />

</connectionStrings>

Como podeis ver, los datos que hemos introducido son los siguientes:

Data Source: sql1.servidoreswindows.net -> El servidor dedicado de Sql Server 2005 de Domitienda.com

Initial Catalog: pruebaDomitienda_BD -> Nombre de la base de datos que hemos creado desde el Plesk

User ID: Prueba

Password: 123456 -> Usuario y Pass de acceso a la base de datos.

Una vez hecho esto ya podríamos conectarnos mediante ADO .NET y el SqlConnector de .Net a la BD usando la ConnectionString que acabamos de crear.

Ah! Y si necesitas crear una ConnectionString mediante ODBC, OleDb u otro estandar de conexión, visita www.connectionstrings.com, donde encontrarás información sobre como crear tus cadenas de conexion para todo tipo de bases de datos habidas y por haber!

¡Un saludo!

Comentarios

Enviar correo desde asp .Net

Hoy en día es necesario que nuestras aplicaciones web envíen correos electrónicos para comunicarnos con los usuarios.
En domitienda lo sabemos y por eso queremos dejaros un pequeño tutorial explicando como podeis hacer esto mismo con vuestro dominio y unas pocas lineas en c#.

Primero tendríamos que crear una cuenta de correo en nuestro dominio.

Para ello tan solo sería necesario acceder al Panel de Control Plesk > Inicio > [tu dominio.com] > Correo > Nueva cuenta de correo.
Nosotros hemos creado la cuenta "envio@domitienda.com" con contraseña "contraseñafalsa1234".

Si nuestra aplicación web esta desarrollada en ASP o PHP podemos utilizar distintos componentes (como el ASPMail, del que hablaré en otra ocasión), en este ejemplo vamos a utilizar un sencillo código en c# para usar con nuestra web en ASP .Net.

private void btnEnviar_Click(object sender, EventArgs e){

//Creamos un nuevo Objeto de Mensaje

MailMessage oMsg = new MailMessage();

//Desde (correo electronico desde la que enviamos)

oMsg.From = new MailAddress(“envio@domitienda.com”);

//Hasta (direccion de correo electronico a la que queremos enviar)

oMsg.To.Add(“cuentaDestino@domitienda.com”);

//Copia Carbon (direccion de correo electronico que queremos que reciba una copia)

oMsg.Bcc.Add(“copia@domitienda.com”);

//Asunto

oMsg.Subject = “Envio de mail desde codigo”;

//Cuerpo del Mensaje

oMsg.Body = “Mensaje enviado desde el codigo fuente de mi aplicación .net”;

//Creamos una instancia de cliente SMTP para el envio del mensaje

//Nombre del servidor SMTP de envio.

//Normalmente es “mail.[tu dominio]

SmtpClient smtp = new SmtpClient(“mail.domitienda.com”);

//Como nuestro servidor requiere autenticación, tenemos que especificar las credenciales

//Para ello tenemos que autenticarnos con nuestra cuenta de correo y contraseña

smtp.Credentials = new System.Net.NetworkCredential(“envio@domitienda.com”,

“contraseñafalsa1234?);

//Y Enviamos el mensaje!!!        

smtp.Send(oMsg);

}

Como podéis ver en el código anterior, es necesario autenticarse en nuestros servidores de correo para poder realizar el envío correctamente.

Para que este código funcione correctamente es necesario que añadais lo siguiente en la cabecera de vuestro fichero .cs:

using System.Net.Mail;

¿Util? ¡Espero que sí!
Como siempre espero vuestros comentarios, dudas y felicitaciones en los comentarios de este post :-P

Un saludo,
El Equipo de Domitienda.com

Comentarios (6)

AspPDF: ¡Crea .pdf desde tu web!

AspPDF es un componente ActiveX que te permitirá crear ficheros .pdf de forma sencilla desde el código fuente de tu aplicación web.

Logo AspPDF

Fácilmente podrás crear tus propios pdf's (para imprimir facturas o albaranes, crear correos electrónicos, construir listados...) tan solo usando un pdf de base y escribiendo sobre él.

Hay ejemplos y tutoriales disponibles en la web oficial que te ilustrarán en el modo de uso de este fantástico componente.

AspPDF ya está instalado en todos los servidores de domitienda.com y podéis disfrutar de sus funcionalidades a partir de hoy.

Y recuerda, si tienes alguna duda sobre este u otro tema, estamos esperándote en el PhpLive.
El equipo de domitienda.com

Comentarios

Configurar Application Services de ASP.NET 2.0 con SQL Server

Entre las novedades que ASP.NET 2.0 incluía respecto a su anterior versión es la gestión de usuarios, algo de lo más común en las mayoría de las webs. Normalmente utiliza una base de datos en local utilizando el SQL Server Express que trae el propio Visual Studio, pero si queremos aprovechar nuestro servidor de SQL Server 2005 tendremos que realizar algún paso para que todo funcione correctamente.

logo asp.net

En el propio servidor debemos utilizar la herramienta aspnet_regsql.exe que viene con el Framework 2.0 de .NET cuya utilidad es preparar nuestra base de datos con la estructura que necesita nuestra aplicación ASP.NET 2.0. Se encuentra en la carpeta C:\WINDOWS\Microsoft.NET\Framework\v2.0.xyz. Al ejecutarlo nos aparecerá un wizard desde el cual podremos elegir la base de datos alojada en nuestro servidor de SQL Server 2005 a la que se le añadirán las tablas necesarias.

logo sql server

Después simplemente hay que cambiar la cadena de conexión de nuestra aplicación para que apunte al servidor y ya está.

<configuration>

<connectionStrings>

<remove name=”LocalSqlServer”/>

<add name="LocalSqlServer" connectionString="Data Source=sql1.servidoreswindows.net;Initial Catalog=base_de_datos;User Id=usuario;Password=password;" providerName="System.Data.SqlClient"/>

</connectionStrings>

</configuration>


Éste será el único paso que deberás realizar, ya que del resto nos ocupamos nosotros.

Comentarios

Add to Technorati Favorites