Avatar billede ingerslev Nybegynder
18. december 2004 - 18:21 Der er 27 kommentarer og
2 løsninger

HttpApplication.Events / HttpApplication.Error

Jeg har lidt problemmer med HttpApplication.Events mere præcist, Error eventen, der skal håndtere alle unhandled exceptions.

Jeg vil gerne have den til at retunere en side, konstrueret af en class, men hver gang får jeg alligevel standard fejlsiden.

I min Web.Config er customerrors sat til off.

Jeg vil gerne vide hvordan man kan bruge HttpApplication.Error eventen i et IHttpModule på en effektiv måde.
Avatar billede ingerslev Nybegynder
18. december 2004 - 20:43 #1
nu har jeg forhøjet pointsummen til 200 points. Er der slet ikke nogen der ved noget om dette?
Avatar billede burningice Nybegynder
18. december 2004 - 20:50 #2
hvordan ser din kode ud i global.asax?
Avatar billede ingerslev Nybegynder
18. december 2004 - 20:55 #3
jeg bruger ikke global.asax, men en IHttpModule Class registreret. Det er dog sagen lidt uvedkommende. Jeg finder lige koden. 2 sek.
Avatar billede burningice Nybegynder
18. december 2004 - 21:02 #4
hm... is that possible ?

well, så er det nok ikke selve koden for siden, men registreringen af handleren det er gået galt med.

hvordan har du registreret den?
Avatar billede ingerslev Nybegynder
18. december 2004 - 21:11 #5
nej nej registreringen virker fint. Har gode erfaringer med det.
Det er kun håndteringen af Error eventen jeg har problemmer med. Har lidt problemmer med internettet, men jeg arbejder på at kunne vise dig noget af koden
Avatar billede ingerslev Nybegynder
18. december 2004 - 21:39 #6
I min web.config fil er IHttpModulet Registreret:

<httpModules>
    <add name="StartModule" type="web2real.AC.StartModule,web2real.AC" />
</httpModules>

og i mit "StartModule" som implementere IHttpModule Classen er der tilføjet funktioner til forskellige server-events:

Public Class StartModule
    Implements IHttpModule

    Public Sub Init(ByVal Application As System.Web.HttpApplication) _
      Implements System.Web.IHttpModule.Init
        AddHandler Application.BeginRequest, AddressOf Me.Application_BeginRequest
        AddHandler Application.AuthenticateRequest, AddressOf _
            Me.Application_AuthenticateRequest
        AddHandler Application.Error, AddressOf Me.Application_Error
    End Sub

Som du kan se er Application_Error registreret til at kører når Application.Error eventen "affyres":

    Public Sub Application_Error(ByVal sender As [Object], ByVal e As EventArgs)
        Dim Context As HttpContext = HttpContext.Current
        Context.Server.Transfer(Globals.UrlBasePage)
    End Sub
End Class

Det jeg gerne vil vide er blot hvordan jeg undgår at få standard error-siden, og istedet kan lave min egen side genereret af en Class.
Avatar billede burningice Nybegynder
18. december 2004 - 22:59 #7
ved ikke om man overhovedet kan gøre det på den måde?

alle de sider jeg har fundet på nettet, og måden jeg også selv gør det på, er at bruge Application_Error i global.asax og her lave en server.transfer. Det virker uden problemer.
Avatar billede ingerslev Nybegynder
18. december 2004 - 23:01 #8
hmm okay... Du siger altså du ikke har brugt IHttpModule overhovedet?
Avatar billede ingerslev Nybegynder
18. december 2004 - 23:08 #9
Avatar billede burningice Nybegynder
18. december 2004 - 23:44 #10
jo, det har jeg skam.. bare ikke lige til errorhandling

men jo, artiklen viser da det burde virke :)
Avatar billede ingerslev Nybegynder
18. december 2004 - 23:45 #11
det er bare exstremt svært at få til at virke som man gerne vil have det til :)
Avatar billede burningice Nybegynder
19. december 2004 - 00:05 #12
du er sikker på, at det ikke er det Server.Transfer man ikke må fra et modul?
Avatar billede snepnet Nybegynder
19. december 2004 - 02:22 #13
hmm... der burde egentlig ikke være så meget ballade med det.
er det måske et navngivningsproblem du har ?
(har du f.eks. en assembly der hedder web2real.AC.dll ?)

<add name="DetteNavnErLigegyldigt" type="CustomErrorsNamespace.CustomErrorsClass,
CustomErrorsAssembly" />

du kan lige se dette lille eksempel (det er godt nok i c# - du må lige sige til hvis jeg skal oversætte det) :
(det er mere så det kan følges fra type="CustomErrorsNamespace.CustomErrorsClass,
CustomErrorsAssembly" og til koden).

// web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>   
  <system.web>
  <httpModules>
    <add name="DetteNavnErLigegyldigt" type="CustomErrorsNamespace.CustomErrorsClass, CustomErrorsAssembly" /> 
  </httpModules>
</system.web>
</configuration>

// og klassen der implementerer IHttpModule
using System;
using System.Web;

namespace CustomErrorsNamespace
{
    public class CustomErrorsClass : IHttpModule
    {
        public void Init(HttpApplication context)
        {           
            context.Error += new EventHandler(context_Error);
        }

        public void Dispose()
        {
        }

        private void context_Error(object sender, EventArgs e)
        {
            // context
            HttpContext context = HttpContext.Current;           
           
            // du kan udskrive - men så skal du sørge for at afslutte responsen
            context.Response.Write("Fejl !");
            context.Response.End();
           
            // eller du kan lave en transfer
            // context.Server.Transfer("ErrorPage.aspx");

            // eller en redirect (her skal du igen sørge for at afslutte responsen)
            // context.Response.Redirect("ErrorPage.aspx", true);
        }
    }
}

håber det kunne hjælpe til at du kan finde ud af hvad der er i vejen hos dig.

mvh
Avatar billede burningice Nybegynder
19. december 2004 - 02:37 #14
snepnet>> hvad i alverden laver du på dette gudsforladte tidspunkt på døgnet ? :P
Avatar billede snepnet Nybegynder
19. december 2004 - 02:40 #15
HAHA :o)
tjoh... tænkte jeg lige ville kaste et blik herud på eksperten... det kunne jo være der var et par andre natugler ;o)
Avatar billede burningice Nybegynder
19. december 2004 - 03:02 #16
her er altid natugler ;)... især to dage før man skal aflevere projekt på UNI... så bliver der vist ikke sovet det helt store
Avatar billede snepnet Nybegynder
19. december 2004 - 03:04 #17
hehe.... næh - den der kender jeg godt :o)
er det et vigtig afsluttende projekt du skal af med ?
Avatar billede burningice Nybegynder
19. december 2004 - 03:12 #18
nææh... det er ikke så slemt, heldigvis.. der er ved at være nogenlunde styr på det :) Artificial Intelligence - Intelligent Agents in MyreKrig (www.myrekrig.dk).

Og så er det jo godt med lidt afveksling fra skriveriet ind i mellem... og findes der en bedre afveksling end eksperten.dk ? ;)
Avatar billede ingerslev Nybegynder
19. december 2004 - 14:18 #19
Har ikke helt gennemskuet min fejl endnu, men jeg tror simpelthen jeg havde en fejl på min transfer site. Og når der opstår en fejl i fejlen så terminere serveren requestet.
Men jeg er dog stadig lidt i tvivl om hvorfor min error bliver loadet 2 gange i træk.

Public Sub Application_Error(ByVal sender As [Object], ByVal e As EventArgs)
  Dim Context As HttpContext = HttpContext.Current

  Context.Response.Clear
  Context.Response.ClearContent

  Context.Response.Write("Fejl...")

  Context.ClearError

  Context.Response.Flush
End Sub

Så får jeg outputtet:

Fejl...Fejl...

lidt underligt, ikke?
Avatar billede burningice Nybegynder
19. december 2004 - 15:41 #20
du skal huske at lave en response.end
Avatar billede ingerslev Nybegynder
19. december 2004 - 18:56 #21
har jeg også prøvet...
Avatar billede snepnet Nybegynder
19. december 2004 - 19:00 #22
får du udskrevet "Fejl...Fejl..." hvis du gør sådan her ? :

  Dim Context As HttpContext = HttpContext.Current
  Context.Response.Write("Fejl...")
  Context.End
Avatar billede ingerslev Nybegynder
19. december 2004 - 22:25 #23
har kastet mig over en anden løsning indtil videre, men i skal have tak for hjælpen... vender nok tilbage en anden gang...
Avatar billede snepnet Nybegynder
07. september 2005 - 18:20 #24
hej ingerslev :o)
kan vi lukke her på en eller anden måde?
mvh
Avatar billede ingerslev Nybegynder
07. september 2005 - 18:58 #25
Tjaa... fik jo aldrig en løsning på mit prob... Hvad tænker du på?
Avatar billede snepnet Nybegynder
07. september 2005 - 19:06 #26
bare en måde at få spørgsmålet lukket på, så det ikke står åbent på listerne :o)
mvh
Avatar billede snepnet Nybegynder
07. september 2005 - 19:08 #27
men fik du aldrig fikset det?
(virkede det her ikke for dig : 19/12-2004 02:22:44 ?)
mvh
Avatar billede ingerslev Nybegynder
07. september 2005 - 20:06 #28
Nej fik det aldrig løst. Kastede mig over en anden løsning.
Men hvis du smider et svar så får du 50 points for hjælpen? så tager jeg resten igen. Er det ikke ok?
Avatar billede snepnet Nybegynder
07. september 2005 - 20:07 #29
bare ok :o)
mvh
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