Toon posts:

[C# ASP.NET] Response.Redirect werkt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn probleem is als volgt, ik heb een invoerpagina (default.aspx).
In het bestand default.aspx.cs laat ik, na een druk op een knop, een aantal sessievariabelen opslaan.
Wat code ter illustratie:
C#:
1
2
3
4
5
6
7
8
9
10
protected void btn_Submit_Click(object sender, EventArgs e)
    {
        // knip
        Session["Branchevereniging"]    = ddl_Branche.Text;
        Session["RelatieNummerCCS"]     = txt_RelatieNummerCCS.Text;
        Session["Adres"]                = txt_Adres.Text;
        //knip
        
        Response.Redirect("Offerte.aspx", false);
    }


Het probleem is dat de pagina niet correct redirect, nu heb ik op internet de volgende pagina gevonden: http://weblogs.asp.net/bl...osted=true#commentmessage
Deze methode lost het probleem helaas niet op, ik begrijp uit het artikel dat een Response.Redirect() een vrij abrupte methode is, waardoor je sessie vaak kapot (kan gaan) gaat.

Wat voor alternatieve methode zou ik hiervoor kunnen gebruiken, of beter nog, hoe kan ik het met een Response.Redirect alsnog oplossen (als dit uberhaupt mogelijk is)?

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Verwijderd schreef op donderdag 10 mei 2007 @ 17:28:
Het probleem is dat de pagina niet correct redirect
Hoezo niet? Wat gaat er mis?

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Kort gezegd: de redirect werkt niet.

De pagina zou moeten redirecten naar Offerte.aspx, maar de pagina laadt Default.aspx opnieuw, ik heb begrepen dat dit te maken heeft met het gebruik van sessies, maar verder tast ik, tot dusver, in het duister.

Momenteel werk ik aan een oplossing (hopelijk) welke gebruik maakt van Server.Transfer, in de hoop dat dit mij verder brengt. Maar elke input van jullie is welkom natuurlijk!

[ Voor 39% gewijzigd door Verwijderd op 10-05-2007 17:42 ]


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Het probleem met sessies is dat door het redirecten de sessioncookie niet wordt meegegeven aan de client en je dus je sessievariabelen kwijt bent. Dat heeft naar ik vermoed weinig te maken met jouw probleem.
[edit]Dit is overigens in ASP.NET 2.0 niet meer zo. Ik kan het iig niet reproduceren.

Staat Offerte.aspx echt in dezelfde map als Default.aspx? Heb je misschien in je Global.asax code staan die naar default.aspx redirect? etc. etc...

Welke versie van .NET gebruik je?

[ Voor 14% gewijzigd door Not Pingu op 10-05-2007 17:45 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Ze staan inderdaad beide in dezelfde map.
Ik gebruik .NET framework versie: 2.0.50727 en ontwikkel op VS.NET 2005 Professional.
Het rare is dat het eerder wel gewerkt heeft, maar ik kan me even niet meer voor de geest halen of ik toen al aan de haal was gegaan met sessies, ik dacht eigenlijk van wel.
Ik zal het straks thuis nog eens proberen te repliceren.
Ik ben nog niet heel erg thuis in ASP.NET, maar in de Global.asax kan ik ook geen rare dingen vinden met betrekking tot redirects oid.

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

Don't redirect after setting a Session variable (or do it right) Misschien is dit je antwoord.
HttpResponse.Redirect Method (String, Boolean) Of hier.
Server.Transfer vs. Response.Redirect Hier hebben ze het over dat je soms beter server.transfer kan gebruiken.
Transferring page values to another page Wat de url zegt, is ook wel interessant volgens mij.
ASP.NET Best Practices for High Performance Applications Misschien niet direct nodig, maar wel handig.
Writing ASP.NET Web Forms with C# Ik weet niet of je met forms bezig bent, maar anders kan je hier ook effe naar kijken.
HttpResponse Class Dit gaat dus over de response class, misschien vind je er nog wat nuttigs in.
How and why session IDs are reused in ASP.NET Misschien ook wel interessant om te lezen.
Naja, hier heb je wat links, misschien kan je d'r niks mee, of misschien wel... Je ziet maar :).

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


  • Razr
  • Registratie: September 2005
  • Niet online
Waarom heb je false in je Response.Redirect staan dan? Als je dat veranderd naar true, gebeurt er dan wat anders? Ik neem aan dat de uitvoering van default.aspx gestopt moet worden?

Verwijderd

Topicstarter
@ibmo2warp: De meeste van die sites heb ik inderdaad al bekeken, maar ze helpen me niet verder. Maar misschien heb ik niet goed gelezen, zal ze nog eens doornemen.

@Razr: er zijn 2 Response.Redirect methodes beschikbaar, 1 met 1 argument en een met 2 argumenten, het tweede argument is inderdaad voor het afbreken van de output, en ik heb het zowel zonder de overloaded methode geprobeert als true en false.

Raar probleem, ga maar eens een nieuw projectje starten om het probleem te isoleren zonder dat ik in de goede code hoef te kliederen.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:10

TeeDee

CQB 241

om eerlijk te zijn gebruik ik ook altijd Response.Redirect("melp.aspx"); en ik heb nog nooit het probleem gehad dat mijn session object verpest is.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:34

mulder

ik spuug op het trottoir

Gebruik je toevallig ook AJAX?

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Nee, puur ASP.NET/C#.

Goed, zoals gezegd heb ik een mini projectje gemaakt en, zoals vanzelfsprekend, werkt het wel gewoon.
Voor de liefhebber:
Default.aspx:
ASP.NET C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ Page Language="C#" AutoEventWireup="true"  EnableSessionState="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Test</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:TextBox ID="textbox1" runat="server" />
    <asp:Button ID="button1" runat="server" OnClick="button1_Click" />
    </form>
</body>
</html>

Default.aspx.cs
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.SessionState;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void button1_Click(object sender, EventArgs e)
    {
        Session["mySession"] = textbox1.Text;
        Response.Redirect("Test.aspx");
    }
}

Test.aspx
ASP.NET C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ Page Language="C#" EnableSessionState="true" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.SessionState;

public partial class Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(Session["mySession"]);
    }
}


Toch blijkbaar ergens in m'n code iets over het hoofd gezien 8)7 , verder spitten dus ;)
Overigens, als meer mensen tegen dit probleem aan zijn gelopen of nog ideeen hebben, schroom niet om ze te posten :)

Edit:

Goed, ik heb het 'probleem' gevonden.
Een vergeten update in de naam van een button...
code:
1
protected void btn_Submit_Click(object sender, EventArgs e)

Moest zijn:
code:
1
protected void btn_VerstuurGegevens_Click(object sender, EventArgs e)

Geloven jullie me als ik zeg dat ik mezelf nu echt even een schop onder m'n poezelige kontgaatje verkoop. Echt 2 uur gespendeerd aan het zoeken naar dit achterlijke foutje :( 8)7 |:(

[ Voor 8% gewijzigd door Verwijderd op 10-05-2007 20:08 ]

Pagina: 1