Michells Mesterværk

Trace dine exceptions med ASP.NET

by Administrator 4. November 2009 13:20

Trace i ASP.NET er noget brugbar information til når du f.eks debugger og/eller leder efter mindre performance issues. Du får f.eks load-tider på hvor hurtigt de forskellige events har brugt på at eksekvere i et givent stadie etc. Du kan se om der er nogle af dine kontroller som hænger, hvad der ligger i din headers collection og mange andre ting.

Du kan også bruge trace funktionaliteten til at outputte evt. vigtige informationer og/eller system-fejl. I følgende eksempel outputter jeg information fra en ArgumentException direkte til tracen og ud i browseren.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Int32 age = 0;
ActAsExceptionThrower(age);
}

private void ActAsExceptionThrower(Int32 age)
{
if (age == 0)
{
ArgumentException a = new ArgumentException("age cannot be 0, you redneck!");
a.WriteExceptionToTrace();
}
}
}

public class QueryStringUtil
{
public static T GetValue<T>(String parameter)
{
return (T)Convert.ChangeType(parameter, typeof(T));
}
}

public static class TraceException
{
public static void WriteExceptionToTrace(this Exception ex)
{
if (ex != null && EnableTraceByQuery())
{
HttpContext.Current.Trace.TraceMode = TraceMode.SortByTime;
HttpContext.Current.Trace.Write(ex.Message);
}
}

private static bool EnableTraceByQuery()
{
String tracerQuery = HttpContext.Current.Request.QueryString["tracer"];

if (!String.IsNullOrEmpty(tracerQuery))
{
if (QueryStringUtil.GetValue<Boolean>(tracerQuery))
{
HttpContext.Current.Trace.IsEnabled = true;

return true;
}
}

return false;
}
}
 
Du skal naturligvis passe på med hvad du outputter til din trace og måske skal du også være forsigtig med hvem der har adgang. Dette er bare et eksempel at det kan lade sig gøre :)

Tags:

Comments

11/4/2009 6:58:23 PM #

Jakob Andersen

Adgangskontrol og generelt overblik kan klares ved at benytte Trace.axd hvilket gøres ved at disable PageOutput fra trace. Det kan enables globalt i web.config så du kan "nøddebugge" en kørende applikation uden at ændre i koden. localOnly er en god ide for at sikre at ikke alle har adgang. Og husk så at slå det fra igen på produktionsmiljøer Wink

Jakob Andersen Denmark

2/14/2010 1:38:48 PM #

اخبار

Thank you very much for the possibility to have a look into the office. Nice boy, he has got the talent to explain.

اخبار Egypt

3/4/2010 6:22:26 AM #

hd movies

I love watching movies online, it is way cheaper than going to the theaters.

hd movies United States

3/4/2010 8:13:24 AM #

hd movies

I love watching movies online, it is way cheaper than going to the theaters.

hd movies United States

3/9/2010 8:43:42 PM #

WoW Mobile

Do you know which cell phone services allow tethering?

WoW Mobile United States

3/10/2010 12:01:20 AM #

WoW Mobile

Do you know which cell phone services allow tethering?

WoW Mobile United States

3/14/2010 11:23:36 PM #

ssk sorgulama

This is a really good read for me, Must admit that you are one of the best bloggers I ever saw.Thanks for posting this informative article.

ssk sorgulama United States

3/17/2010 11:30:21 AM #

arac sorgulama

I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else!

arac sorgulama United States

3/20/2010 3:22:39 PM #

ehliyet

Excellent post.I want to thank you for this informative read, I really appreciate sharing this great post. Keep up your work.

ehliyet Denmark

Add comment


(Will show your Gravatar icon)

(De 3 specielle karaktere i det danske alfabet?)
  Country flag

biuquote
  • Comment
  • Preview
Loading



Powered by BlogEngine.NET 1.6.0.0
Theme by Mads Kristensen