lunes, 22 de febrero de 2010

Abrir archivo en asp.net

Para devolver un archivo cualquiera en asp.net, primero se deben borrar los contenidos de cabeceras y contenido en general. Luego poner el tipo de contenido mime (text/html, text/plain, etc). Y luego simplemente escribir el archivo a la salida de la página:

dim fullPath as string = "C:\temp\a.xls"
Response.ClearHeaders()
Response.ClearContent()
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment;filename=" + filename)
Response.WriteFile(fullPath)
Response.Flush()
Response.End()

Como obtener el path temporal en .Net


Los directorios temporales son buenos para guardar registros simples durante la ejecución de un programa. Puede ser una operación de nuestro programa, como una descompresión o un archivo de salida que solo servirá por un tiempo y luego se podrá borrar.

La ubcación del archivo temporal variará de sistema operativo a otros, por eso usamos este pequeño código para obtener el path temporal.

string sDir = System.IO.Path.GetTempPath();

Console.WriteLine("Path temporario = " + sDir );


validar email con expresiones regulares

Para validar con javascript un mail mediante expresiones regulares tenemos que crear un patrón de la expresión y luego testearlo contra la cadena dada (que debe provenir del control que contiene la dirección de email):

function
validateEmail(elementValue){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
return emailPattern.test(elementValue);
}

miércoles, 17 de febrero de 2010

Cannot create/shadow copy '#webname#' when that file already exists

Para corregir este error lo único que se puede hacer es un rebuild de todo el sitio, volver a cargar el sitio.
Si esto no funcionará tratar de nuevo, en general funciona correctamente.

Login failed for user 'user1'. The user is not associated with a trusted SQL Server connection

Este mensaje indica que SQL Server no permite el acceso a este usuario, porque está en modo de Autenticacion Windows, Hay que cambiar el modo a "mixto". Se hace de la siguiente manera:

  • Ir a propiedades del server
  • Ir a Seguridad
  • En la seccion Autenticación del Server hay que seleccionar "Modo de autenticacion de SQL Server y Windows" (que es el modo mixto que permite los dos modos)

Hacer invisible una tabla HTML

Hacer una funcion en javascript que haga lo siguiente y llamarla pasandole en checked true o false:
function hideOptions(var checked){

if(checked)
hide='none';
else
hide='';

var obj=document.getElementById('HTMLTableID');
obj.style.display = hide;
}

Como usar el ProfileCommon desde App_Code

Para usar el profileCommon desde una clase en app_code, que nos permite acceder a datos de usuarios, crearlos, etc, se puede acceder de esta manera:

ProfileCommon p = (ProfileCommon)ProfileBase.Create(tmp_username,true);

Este es un metodo estático, que crea una versión mas genérica del profile, profileBase, por eso hay que castearla a ProfileCommon.

martes, 16 de febrero de 2010

Poner un elemento u objeto invisible en javascript

Para ocultar un objeto seteamos el elemento visibility del estilo en hidden o en blanco para hacerlo visible:
var obj=document.getElementById('IdObjeto');
obj.style.visibility = hide;

SQL: cuantos registros fueron afectados?

Si uno desea saber en un sql, stored procedure, etc cuantos fueron los registros afectados por la ultima operacion, debe hacer:

SELECT @@ROWCOUNT

Por ejemplo para insertar un registro si no se pudo hacer la actualización (pseudocodigo):

UPDATE tabla con registro=ID
IF @@ROWCOUNT=0
BEGIN
INSERT tabla mismo registro
END

MSSQL Reemplazar

En microsoft SQL (MsSQL) la forma de reemplazar un texto en un campo es de la siguiente manera:
REPLACE ( expresion , cosa_a_reemplazar , reemplazo)

por ejemplo:
PRINT REPLACE ( 'Hola blabla tal?' , 'blabla' , 'que')

Lo que daria como resultado: 'Hola que tal?'

lunes, 15 de febrero de 2010

Editar y seguir corriendo

Esto solo anda con el web server itnerno de VS, no con IIS.
Para hacer andar el comando "Edit and Continue" en Visual Studio asp.net hay que hacer dos cosas que estan no tan a la vista.
Por un lado en Herramientas / Opciones / Depuración (Si no lo encuentra ir debajo y chequear mostrar todas las opciones) y ahi encontrará en Edit and Continue y chequear "habilitar".

Luego en las propiedades del proyecto en Web, habilitar edit and continue también.

Y asi deberia andar.

jueves, 11 de febrero de 2010

errores corriendo aplicaciones en drives de red

Errores tales como:
"Project location is not trust", "No se confia en la ubicacion del proyecto", "No se pueden obtener los permisos necesarios" etc, significan que .net no puede tomar permisos en el caso de una ubicacion de red.
Si agregamos la ubicacion de red como un disco de Red (Z: en la mayoria de los casos), este disco es como si fuera de la maquina, para darle acceso debemos correr desde una ventana de comando de las que vienen en el grupo de inicio de visual studio, con permisos de administrador :

c:\>caspol -q -machine -addgroup 1 -url file://z:/* FullTrust -name "Z Drive"

Una vez hecho esto se le dará permisos fulltrust a cualquier codigo en ese disco, asi que tenga cuidado.

Creando una nueva planilla en excel desde c#


using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\dummy.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Col1] string, [Col2] string)", conn);
cmd.ExecuteNonQuery();
}

lunes, 8 de febrero de 2010

encodear url en forms

Para codificar una string como url en forms de c# hay que agregar una referencia a System.Web (boton derecho sobre el proyecto, Agregar referencia, y luego seleccionar System.web)

Luego llamar al metodo estatico asi:

string url = HttpUtility.UrlEncode(cadena);