IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Response.Redirect : “Le thread a été abandonné.”


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Response.Redirect : “Le thread a été abandonné.”
    Bonjour à tous,

    Je rencontre un problème lorsque je fais une redirection simple.

    J'ai une page detail.aspx qui me sert à visualiser et à modifier des données.
    Mes données sont dans une ReorderList (AjaxToolKit) qui contient une ModalPopupExtender (AjaxToolKit).

    Lorsque je modifie mes données mon ModalPopupExtender renvoi vers ce code Javascript avec un peu de JQuery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    var list = document.getElementById('ctl00_ContentPlaceHolder_TabContainer1_tabStep3_rolParameter__rbl');
    var value;
    var j = 0;
    var ReportId = getQuerystring('id');
     
    for (var i = 0; i < list.childNodes.length; i++) {
        var li = list.childNodes[i];
        if (li.tagName == 'LI') {
            //GetValues
            var ParameterId = document.getElementById('ctl00_ContentPlaceHolder_TabContainer1_tabStep3_rolParameter__rli' + j + '_hidParamEditId');
            var DisplayName = document.getElementById('ctl00_ContentPlaceHolder_TabContainer1_tabStep3_rolParameter__rli' + j + '_txtParamEditDisplayName');
            var Operator = document.getElementById('ctl00_ContentPlaceHolder_TabContainer1_tabStep3_rolParameter__rli' + j + '_txtParamEditOperator');
            var DefaultValue = document.getElementById('ctl00_ContentPlaceHolder_TabContainer1_tabStep3_rolParameter__rli' + j + '_txtParamEditDefaultValue');
            var IsVisible = document.getElementById('ctl00_ContentPlaceHolder_TabContainer1_tabStep3_rolParameter__rli' + j + '_chkParamEditIsVisible');
            j++;
            //ReturnValues
            if (DefaultValue.value == '') {
                DefaultValue.value = '[Empty]';
            }
            if (typeof value === 'undefined') {
                value = ParameterId.value + '\t' + DisplayName.value + '\t' + Operator.value + '\t' + DefaultValue.value + '\t' + IsVisible.checked;
            }
            else {
                value = value + '\t' + ParameterId.value + '\t' + DisplayName.value + '\t' + Operator.value + '\t' + DefaultValue.value + '\t' + IsVisible.checked;
            }
        }
    }
    $.post(window.location.href, { type: "parameter", value: value });
    return false;
    Jusqu'ici tout va bien
    Ce code javascript renvoi donc les données de ma page en POST
    Ma page récupère les données, modifie la base de données en conséquence et redirige vers elle même pour rafraichir l'affichage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     if ((!string.IsNullOrWhiteSpace(this.Request.QueryString["id"])) & (!string.IsNullOrWhiteSpace(this.Request.Form["type"])) & (!string.IsNullOrWhiteSpace(this.Request.Form["value"])))
    {
                    //Recuperation des valeurs passées en GET (ID) et en POST
                    //..........
     
                    //Mise à jour de la base de données
                    //..........
     
                    //Reload de la page
                    Response.Redirect(this.Request.ApplicationPath + "/mapage.aspx?id=" + Id);
    }
    Et c'est là que j'ai l'erreur “Le thread a été abandonné.”.

    Si j'envoie les données en GET en javascript au lieu de POST cela fonctionne.

    Il y a quelque chose que je ne saisis pas.

    Auriez vous une idée de la source de mon problème ?

    Merci par avance

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Rien de très surprenant, c'est le fonctionnement même de Response.Redirect. Cyril Durand en parle sur son blog.

    Tu devrais trouver la solution à ton problème en lisant cet article

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    J'avais déjà lu cet article mais plusieurs détails m'intriquent.

    Même si je capture l'erreur, ma redirection ne se fait pas.

    Ce qui m'intrigue le plus c'est qu'en passant mes paramètres en GET cela fonctionne et en passant mes paramètres en POST j'ai cette erreur.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    En fait il faut comprendre le fonctionnement de Response.Redirect. Lorsque tu appelles cette méthode, le serveur envoie une réponse HTTP 302. Cette réponse indique au navigateur qu'il doit continuer la navigation sur l'URL contenue dans le header "Location".

    Cette "navigation" se fait en GET, même si la requête d'origine est en POST.

    Donc il n'est pas possible - de manière standard - de faire ce que tu souhaites en utilisant la méthode Response.Redirect.

    Il existe une astuce consistant à utiliser une réponse HTTP 307 (qui permettrait de répéter un POST), mais ça n'est pas supporté par tous les navigateurs donc son fonctionnement reste aléatoire. Ca reste à vérifier mais de mémoire il me semble que c'est le cas...

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je crois que tu n'as pas compris ce que je cherche à faire.

    J'implémente le design pattern Post redirect Get.

    1. L'utilisateur modifie les données et clique sur le bouton Sauvegarder.
    2. Les données sont envoyées en POST par javascript.
    3. Je récupère les données et les met à jour dans la base de données.
    4. Je recharge la page via Response.Redirect vers mapage.aspx?id=MonId
    5. Je lis la page et charge les données grâce à mon id passé en GET


    Si, à ma première étape, j'envoie les données en GET au lieu de POST cela fonctionne.
    Par contre, si j'envoie les données en POST j'ai l'erreur “Le thread a été abandonné.” sur la redirection. Les conséquences sont que mes données sont à jour dans ma base mais pas à l'affichage.

    Je posterai la solution si je la trouve.

    PS : Voici un lien qui explique en détail comment fonctionne les redirections au niveau HTTP http://sebastians-pamphlets.com/the-...s-301-302-307/

Discussions similaires

  1. [C#] "Le thread a ete abandonne"
    Par Drahu dans le forum Windows Forms
    Réponses: 6
    Dernier message: 02/03/2005, 14h35
  2. Response.redirect() avec ancre nomée
    Par roots_man dans le forum ASP
    Réponses: 4
    Dernier message: 23/11/2004, 10h37
  3. probleme avec Response.Redirect
    Par nicerico dans le forum ASP
    Réponses: 2
    Dernier message: 06/08/2004, 16h21
  4. problème de response.redirect
    Par boucher_emilie dans le forum ASP
    Réponses: 5
    Dernier message: 06/07/2004, 10h10
  5. Réponses: 3
    Dernier message: 17/06/2004, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo