Experiencias de un programador curioso del SEO
.NET
Articulos relacionados con ASP.NET
Custom exceptions en C#
14 ene
En ocasiones queremos lanzar custom exceptions que nos permitan lanzar errores personalizados cuando por ejemplo se ha hecho una llamada al servidor con un parametro incorrecto pero no queremos utilizar una de las excepciones predefinidas ya que queremos guardar y generar más información sobre la excepción. En este articulo os dejo un ejemplo de como crear nuestro propio custom exception en c#.
public class MyCustomException : ApplicationException
{
public MyCustomExceptionException(string message)
: base(message)
{
}
}
Cuando queremos usar nuestro custom exception en la creación de un error controlado lo hariamos de la siguiente forma:
throw new MyCustomException("Mensaje de error customizado");
Podriamos usarlo en el control de errores mediante la captura de errores en global.asax redirigiendolos a una página creada para gestionar los mensajes de error a nuestros usuarios:
protected void Application_Error(Object sender, EventArgs e)
{
if (Context != null && Context.IsCustomErrorEnabled)
{
Server.Transfer("~/Error.aspx", false);
}
}
Una vez redirigo el error podriamos usarlo de la siguiente forma:
Exception ex = Server.GetLastError();
if (ex != null)
{
Exception innerException = ex.InnerException;
if (innerException != null)
{
if (innerException is MyCustomException)
{
HttpContext.Current.Response.StatusCode = 401;
this.lblError.Text = ex.Message;
}
}
Espero que os sea útil y como siempre para vuestra comodida tambien en pastebin.
Función de c# para dar formato a un tweet
6 ene
Hara unos días creando un módulo de twitter para el CMS Cuyahoga tuve que desarrollar una función de c# para dar formato a un tweet.
Revisando el twitter he visto el excelente artículo de Alfredo Artiles sobre Expresiones regulares para dar formato a un Tweet , este excelente profesional ha desarrollado funciones para php y javascript y despues de leer su articulo se me ha ocurrido que podria compartir con vosotros la que realice para c#.
Función en c#
const string ScreenNamePattern = @"@([A-Za-z0-9\-_&;]+)";
const string HashTagPattern = @"#([A-Za-z0-9\-_&;]+)";
const string HyperLinkPattern = @"(http://\S+)\s?";
public static string FormatTweetText(string text)
{
string result = text;
if (result.Contains("http://"))
{
var links = new List<string>();
foreach (Match match in Regex.Matches(result, HyperLinkPattern))
{
var url = match.Groups[1].Value;
if (!links.Contains(url))
{
links.Add(url);
result = result.Replace(url, String.Format("<a href=\"{0}\">{0}</a>", url));
}
}
}
if (result.Contains("@"))
{
var names = new List<string>();
foreach (Match match in Regex.Matches(result, ScreenNamePattern))
{
var screenName = match.Groups[1].Value;
if (!names.Contains(screenName))
{
names.Add(screenName);
result = result.Replace("@" + screenName,
String.Format("<a href=\"http://twitter.com/{0}\">@{0}</a>", screenName));
}
}
}
if (result.Contains("#"))
{
var names = new List<string>();
foreach (Match match in Regex.Matches(result, HashTagPattern))
{
var hashTag = match.Groups[1].Value;
if (!names.Contains(hashTag))
{
names.Add(hashTag);
result = result.Replace("#" + hashTag,
String.Format("<a href=\"http://twitter.com/search?q={0}\">#{1}</a>",
HttpUtility.UrlEncode("#" + hashTag), hashTag));
}
}
}
return result;
}
Como siempre para vuestra comodidad tambien os la dejo disponible en pastebin.
Twitter : Destroy Status con REST y cURL en C#
24 dic
Hace unos dias estuve trasteando con la API de twitter concretamente tratando de eliminar mensajes del timeline. Twitter ofrece en su API metodos REST. Revisando estos metodos encontre Destroy Status metodo que permite ser llamado via cURL ; como sabeis habitualmente trabajo con c# así que me puse manos a la obra y encontre la libreria libcurl.NET que permite usar cURL desde una aplicación .NET. Bueno no me enrollo más y os dejo con lo importante un ejemplo de la implementación de un metodo para eliminar mensajes de twitter via Destroy Status en C#.
Codigo de ejemplo de eliminación de un mensaje en twitter via REST y cURL.
Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); Easy.ReadFunction wf = new Easy.ReadFunction(OnWriteData); string statusid = "idejemplo"; //Id del Status easy.SetOptCURLoption.CURLOPT_URL,"http://twitter.com/statuses/destroy/" + statusid + ".xml"); easy.SetOpt(CURLoption.CURLOPT_POST,true); easy.SetOpt(CURLoption.CURLOPT_USERPWD, _TWITTERUSER + ":" + _TWITTERPASS); string code = easy.Perform().ToString(); easy.Cleanup(); Curl.GlobalCleanup();