En algunos entornos de producción puede ser práctico notificar por correo electrónico las excepciones que se produzcan en nuestra aplicación. Para hacer esto podemos crear un simple método estático como el siguiente
public class Log
{
public static void ExceptionToEmail(string host, int port, string userName, string password, string from, string to, string subject, Exception ex)
{
string body =
“Type: Exception.” + System.Environment.NewLine +
“Date: ” + DateTime.Now.ToString() + System.Environment.NewLine +
“Message: ” + ex.Message + System.Environment.NewLine +
“Source” + ex.Source + System.Environment.NewLine +
“StackTrace: ” + ex.StackTrace + System.Environment.NewLine +
“TargetSite: ” + ex.TargetSite.ToString() + System.Environment.NewLine +
“ExceptionType: ” + ex.GetType().ToString() + System.Environment.NewLine +
“MachineName: ” + Environment.MachineName + System.Environment.NewLine +
“OSVersion: ” + Environment.OSVersion.ToString() + System.Environment.NewLine +
“UserDomainName: ” + Environment.UserDomainName + System.Environment.NewLine +
“UserName: ” + Environment.UserName + System.Environment.NewLine +
“Version: ” + Environment.Version.ToString();
Log.EventToEmail(host, port, userName, password, from, to, subject, body);
}
public static void EventToEmail(string host, int port, string userName, string password, string from, string to, string subject, string body)
{
try
{
SmtpClient smtpClient = new SmtpClient(host, port);
smtpClient.Credentials = new NetworkCredential(userName, password);
MailMessage mailMessage = new MailMessage(from, to, subject, body);
smtpClient.Send(mailMessage);
}
catch
{
}
}
}
}
Para notificar la excepción tan sólo tendremos que llamar al método ExceptionToEmail con los parámetros de nuestro servidor de correo y la excepción a notificar. Este método, creara un mensaje con la excepción, intentado capturar la mayor información posible.
El método de envio asume que el servidor de correo electrónico necesita un nombre de usuario y contraseña para realizar en envio, aunque con poco esfuerzo podremos modificar este comportamiento.
Categories: .NET Framework
Etiquetado: c#, correo electronico, email, excepcion, exception
En algunas ocasiones puede ser necesario lanzar scripts sql complejos contra nuestro servidor Sql Server. Estos scripts la mayoría de la veces contienes la palabra GO. Si usamos el método ExecuteNonQuery veremos que nuestro script no se ejecuta correctamente ya que este detiene la ejecución al encontrarse con el primer GO.
La solución en este caso es usar el objeto Server. El código es realmente simple
ServerConnection serverConnection = null;
string sql = “<nuestro script sql>”;
SqlConnection sqlConnection = new SqlConnection(”<cadena de conexión>”);
serverConnection = new ServerConnection(sqlConnection);
Server server = new Server(serverConnection);
server.ConnectionContext.ExecuteNonQuery(sql);
Si lo queremos hacer transaccional usaremos
ServerConnection serverConnection = null;
try
{
string sql = “<nuestro script sql>”;
SqlConnection sqlConnection = new SqlConnection(”<cadena de conexión>”);
serverConnection = new ServerConnection(sqlConnection);
serverConnection.BeginTransaction();
Server server = new Server(serverConnection);
server.ConnectionContext.ExecuteNonQuery(sql);
serverConnection.CommitTransaction();
}
catch (Exception ex)
{
serverConnection.RollBackTransaction();
MessageBox.Show(ex.Message);
}
Sólo falta añadir que tendremos que hacer uso de la librerias
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
Saludos.
Categories: .NET Framework · Sql Server
Etiquetado: c#, sql, Sql Server
Categories: .NET Framework
Etiquetado: ajax, asp.net, javascript, tutorial
Para validar una expresión regular en .net tan solo necesitamos usar la clase RegEx. En el caso concreto de una dirección de correo tenemos la siguiente expresion regular
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Para usar esta expresión regular en nuestro código y validar varias direcciones de correo electrónico separadas por ‘;’ sólo debemos escribir los siguiente
Dim emails As String() = textDirecciones.Text.Split(";")
Dim pattern As String = “\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*”
For Each email As String In emails
If (Not RegularExpressions.Regex.IsMatch(email, pattern)) Then
message &= String.Format(”La dirección de correo {0} no parece correcta. {1}”, email, Environment.NewLine)
End If
Next
Si message es distinto de string.empty es que alguna dirección de correo electrónico no es válida.
Categories: .NET Framework
Etiquetado: vb
Desarrollando una pequeña aplicación para PDA con el Compact Framework .NET, me encontré con que el objecto Application no tenía el método ExecutionPath ni similares para obtener el directorio de ejecución y así poder calcular la ruta para la creación de ficheros de configuración. Indigando por Intenert encontre estos
VB.NET
Dim path As String
path = System.IO.Path.GetDirectoryName( _
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
MessageBox.Show(path)
C#
string path;
path = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );
MessageBox.Show(path);
Espero que les sea de ayuda.
Categories: .NET Framework
Etiquetado: c#, compact framework, vb
Bueno, tras una pequeña andadura con un dominio propio he decido mudarme a wordpress. Los motivos son varios y creo que no merece la pena explicarlos. Creo que lo verdaderamente importante es que continuaré publicando, aunque he decidido ampliar el aspecto de mi noticias, y en vez de centrarme en el desarrollo web con .NET, ampliaré los post a todo los relacionado con el Framework de .NET o cualquier otra noticia tecnológica de interes.
Categories: Personal
Etiquetado: Personal