Avatar billede thanse21 Nybegynder
07. september 2006 - 14:56 Der er 13 kommentarer og
1 løsning

Custom Errors og Exceptions

Jeg er ved at bruge CustomError funktionaliteten gennem web.config.
Mit problem er at jeg gerne vil have den exception, der generer fejlen i første gang, altså lidt a la den måde ASP.NET skriver en fejl ud, hvis man angiver 'CustomErrors mode=Off' i web.cofig.
Kan det lade sig gøre?
Avatar billede dr_chaos Nybegynder
07. september 2006 - 16:50 #1
med
Server.GetLastError().endelforskelligemulighederher;
Avatar billede thanse21 Nybegynder
08. september 2006 - 08:30 #2
Takker mange gange :-)
Avatar billede dr_chaos Nybegynder
08. september 2006 - 08:37 #3
np :)
Avatar billede thanse21 Nybegynder
08. september 2006 - 09:28 #4
Hmmm...
Synes nu ikke lige der kommer noget ud af den metode.

Det jeg gerne vil have, er at min CustomErrorPage sender en mail med en udskrift af fejlen.

Men der er ikke noget i Server.GetLastError()...hvordan kan det være?
Avatar billede dr_chaos Nybegynder
08. september 2006 - 09:31 #5
er der opstået en exception ?
Avatar billede dr_chaos Nybegynder
08. september 2006 - 09:33 #6
prøv evt. at kigge her:
www.aspnetresources.com/articles/CustomErrorPages.aspx+asp.net+Server.GetLastError" target="_blank">http://66.249.93.104/search?q=cache:OYrhWVBVhl0J:www.aspnetresources.com/articles/CustomErrorPages.aspx+asp.net+Server.GetLastError()&hl=da&gl=dk&ct=clnk&cd=2&client=firefox-a
Avatar billede thanse21 Nybegynder
08. september 2006 - 09:36 #7
Jeg kommer ind på min ErrorPage, og der kommer den vel ikke ind med mindre der kommer en exception. Jeg fremprovokerer en InvalidCastException, så ja, der opstår en exception.
Avatar billede dr_chaos Nybegynder
08. september 2006 - 09:41 #8
prøv at lægge:
protected void Application_Error(Object sender, EventArgs e)
{
  // At this point we have information about the error
  HttpContext ctx = HttpContext.Current;

  Exception exception = ctx.Server.GetLastError ();

  string errorInfo =
    "<br>Offending URL: " + ctx.Request.Url.ToString () +
    "<br>Source: " + exception.Source +
    "<br>Message: " + exception.Message +
    "<br>Stack trace: " + exception.StackTrace;

  ctx.Response.Write (errorInfo);

  // --------------------------------------------------
  // To let the page finish running we clear the error
  // --------------------------------------------------
  ctx.Server.ClearError ();
}
ind i global.asax og håndter evt fejlene derfra.
Avatar billede thanse21 Nybegynder
08. september 2006 - 09:45 #9
Tja, det er vel et forsøg værd. Kunne nu godt tænke mig at klare det gennem Web.config og en enkelt .aspx-side.
Avatar billede dr_chaos Nybegynder
08. september 2006 - 09:54 #10
det kan du også.
Hvis du nu f.eks. ligger fejl tingene i en database eller lignende kan du hente dem ud på din error page.
Ellers skal man på hver enkelt side override onerror og det er nok også en smule besværgligt.
På app niveau kan man så vidt jeg husker kun gøre det via global.asax.
Avatar billede thanse21 Nybegynder
08. september 2006 - 10:02 #11
Tror faktisk jeg laver den Override, fordi jeg i forvejen har en base-klasse, som alle sider nedarver fra...
Derudover er der ikke så mange sider, der er en defualt-side der loader usercontrols.

Tak for tipsene.

PS: Synes stadig der er underligt at der ikke kommer noget ud af Server.GetLastError(), når der er blevet redirectet til en CustomErrorPage...
Avatar billede dr_chaos Nybegynder
08. september 2006 - 10:23 #12
det er fordi at Server.GetLastError() kun fanges på den side fejlen sker eller i global.asax.
Avatar billede mnoer Nybegynder
08. september 2006 - 14:29 #13
Du kan bruge Server.Transfer i stedet for Server.Redirect, så burde du stadig kunne hente fejlen i Server.GetLastError()
Avatar billede mnoer Nybegynder
08. september 2006 - 14:30 #14
Der skulle stå Response.Redirect (ikke Server.Redirect) :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester