Avatar billede neoman Novice
14. november 2007 - 00:08 Der er 12 kommentarer og
1 løsning

Få exception message i Application_Error

I global.asax har jeg en handler for fejl Application_Error

Det fungerer fint nok med at redirecte til en custom error page.

Jeg vil gerne have have fejlbeskeden med, og det kniber med at få den frem for sig selv.

I min kode på en side gør jeg følgende:

Throw new Exception("This is my test exception")

og i global.asax:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

  Dim LastException As String = Context.Error.ToString()
  Context.ClearError()
  Response.Redirect("CustomErrors.aspx?Err=" &  Server.UrlEncode(LastException))
End Sub

Jeg vil gerne have fat i min egen besked, dvs.:"This is my test exception". Den forekommer i Context.Error.ToString(), så er der en property på Error, hvor jeg kan få fat i den direkte ? jeg synes jeg har prøvet alt indlysende :-(
Avatar billede neoman Novice
14. november 2007 - 00:44 #1
En af de mere indlysende ting:

    Context.Error.Message

giver: 

    Exception+of+type+'System.Web.HttpUnhandledException'+was+thrown.

mens den nuværende Context.Error.ToString() giver en hel masse + stack-trace agtigt, men derinde forekommer mine ord This is my test exception
Avatar billede kalp Novice
14. november 2007 - 07:57 #2
kan du ikke få den med:
Server.GetLastError()
Avatar billede neoman Novice
14. november 2007 - 11:12 #3
Nope :-( , den giver Exception of type 'System.Web.HttpUnhandledException' was thrown.
Avatar billede neoman Novice
14. november 2007 - 11:13 #4
altså Server.GetLastError().Message
Avatar billede neoman Novice
15. november 2007 - 15:24 #5
bump - no bidders?
Avatar billede kalp Novice
15. november 2007 - 15:27 #6
Jeg havde desværre blot en enkelt indskydelse.. for at komme med mere kræver det at jeg sætter det op selv og har desværre ikke lige tiden til det pt:(
Avatar billede neoman Novice
15. november 2007 - 15:28 #7
Hehe jeg forventer sku ikke at sætte dig i gang med en masse:) Håber blot på nogen har prøvet det og ved hvordan:)
Avatar billede kalp Novice
15. november 2007 - 15:29 #8
pfjew :D he he
Avatar billede neoman Novice
16. november 2007 - 14:21 #9
Jeg må tydeligvis finde en anden metode. Tak til Kalp for bud.
Avatar billede erikjacobsen Ekspert
16. november 2007 - 14:25 #10
Jeg fandt denne kode på nettet (husker ikke hvor), der i global.asax' Application_Error spadserer ned gennem flere lags exceptions.

        Dim ex As Exception = HttpContext.Current.Server.GetLastError()
        If ex IsNot Nothing Then
            Dim exceptionlayer As Exception = Nothing
            If TypeOf ex Is HttpUnhandledException Then
                exceptionlayer = ex.InnerException
            Else
                exceptionlayer = ex
            End If
            Dim sb As New StringBuilder()
            While exceptionlayer IsNot Nothing
                sb.AppendLine(ex.ToString())
                sb.AppendLine("-------------------------------")
                exceptionlayer = exceptionlayer.InnerException
            End While
        end if
Avatar billede neoman Novice
16. november 2007 - 14:28 #11
tak for det erik, jeg kan først give feed back på dette bud i aften eller i morgen
Avatar billede neoman Novice
16. november 2007 - 21:09 #12
Det virkede perfekt - tricket var åbenbart at få fat i den inner exception, og så kunne jeg få dennes .Message ud, ganske som jeg selv havde skrevet den.

Mange tak! (Og eftersom jeg går ud fra at det er "same procedure as last year" så åbner jeg ikke et nyt spørgsmål med points til dig !:)
Avatar billede erikjacobsen Ekspert
16. november 2007 - 22:53 #13
:)
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