[ASP.NET 2.0] Code buiten BeginRequest en EndRequest

Pagina: 1
Acties:

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:55

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
Ik heb een pagina met een FormView waarvan de ObjectDataSource een fout gooit. Dat is op zich het probleem niet, want In het Inserted event van een ODS kan je vlaggen of de exceptie afgehandeld is of niet. Als ik dus aangeef dat de exceptie niet afgehandeld is, krijg ik een mooi geel-met-rood-schermpje + exception call-stack.

Als ik echter aangeef dat de exceptie wel afgehandeld is, dan treedt er een EndRequest op, maar daarna wordt de pagina alsnog verder afgehandeld door .NET. Of zo lijkt het toch: er treedt geen BeginRequest meer op, maar er wordt wel control-code uitgevoerd (OnPreRender om precies te zijn).

Hoe is dit te verklaren? Het lijkt alsof het volgende plaats vindt (wat mij niet logisch lijkt):
  1. BeginRequest
  2. ObjectDataSource exceptie
  3. ItemInserted handler (ik vlag dat de exceptie afgehandeld is)
  4. EndRequest
  5. OnPreRender

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 09:49
Zonder dat ik precies weet wat er aan de hand is:
Kan het niet zo zijn dat je je request stopt, maar dat'ie dan nog doorgaat met de response (OnPreRender). Dus moet je dan niet zelf de response stoppen?

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:55

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
Hmja, ik kan misschien de response wel stoppen, maar eigenlijk is het probleem dat ik dat net niet wil. Eigenlijk moet de rest van de pagina gewoon functioneren, maar het probleem is dus dat die EndRequest roet in het eten gooit. Er worden namelijk resources door een andere library gedisposed op dat event. En daarna moet dus mijn code nog komen, en die functioneert niet meer nadat die resources zijn opgeruimd.

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:42

gorgi_19

Kruimeltjes zijn weer op :9

Doe je iets met Response.Redirect en / of Server.Transfer?

[ Voor 26% gewijzigd door gorgi_19 op 16-10-2006 13:21 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:55

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
gorgi_19 schreef op maandag 16 oktober 2006 @ 13:13:
Doe je iets met Response.Redirect en / of Server.Transfer?
Mijn eerste reactie is: "neen, daar niet", maar ik zal het voor de zekerheid maar weer even checken. Sowieso niets met Transfer, maar mss wel met Redirect.

Wij onderbreken deze thread voor reclame:
http://kalders.be


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:42

gorgi_19

Kruimeltjes zijn weer op :9

GrimaceODespair schreef op maandag 16 oktober 2006 @ 13:29:
[...]

Mijn eerste reactie is: "neen, daar niet", maar ik zal het voor de zekerheid maar weer even checken. Sowieso niets met Transfer, maar mss wel met Redirect.
Response.Redirect / Response.End veroorzaken beiden namelijk een ThreadAbortException en slaan zodoende EndRequest over , afaik :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 10:55

GrimaceODespair

eens een tettenman, altijd ...

Topicstarter
gorgi_19 schreef op maandag 16 oktober 2006 @ 13:32:
[...]

Response.Redirect / Response.End veroorzaken beiden namelijk een ThreadAbortException en slaan zodoende EndRequest over , afaik :)
Ik ben er vrij zeker van (niet 100%) dat er geen redirect plaatsvindt. En ook dat er geen ThreadAbortException plaatsvindt. Tijdens het debuggen treedt er immers geen exceptie op (behalve die van mijn ODS natuurlijk).

Ok, voor het nageslacht, hier de:

oplossing:
In het Inserted of Updated event van de FormView kan je aangeven dat er niet van modus geswitcht moet worden, bv:
C#:
1
2
3
4
5
6
7
8
protected void formView_Inserted(object sender, FormViewInsertedEventArgs e)
{
    e.ExceptionHandled = true;
    if (e.Exception != null)
    {
        e.KeepInInsertMode = true;
    }
}


De EndRequest gebeurde dus wsch omdat de FormView van modus probeerde te wisselen.

[ Voor 36% gewijzigd door GrimaceODespair op 16-10-2006 15:00 ]

Wij onderbreken deze thread voor reclame:
http://kalders.be

Pagina: 1