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 MVC Discussion :

MVC3, asynchonus et ajax


Sujet :

ASP.NET MVC

  1. #1
    Membre habitué Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Points : 162
    Points
    162
    Par défaut MVC3, asynchonus et ajax
    Bonjour,

    J'ai un gros problème en utilisant l'ajax de Jquery et le MVC3.

    Code JS :

    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
    function time(time) {
        $.ajax({
            async: true,
            type: "POST",
            dataType: "json",
            url: "/Connexion/Time",
            data: "time=" + time,
            success: function (data) {
                $("#DIV_ENTETE").append(" OK" + time);
            },
            error: function (request) {
                alert("erreur");
            }
        });
    }
     
    function valider(){
    $.ajax({
            async: true,
            type: "POST",
            dataType: "json",
            url: "/Connexion/ValiderConnexion",
            success: function (data) {
     
            }
        });
    }
    Code VB (simplifié):

    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
     
     
    Inherits System.Web.Mvc.Controller
     
    Function Time() As ActionResult
     
            Sleep(Request.Form.Item("time"))
     
            Return Json(1)
     
        End Function
     
    Function ValiderConnexion() As ActionResult
     
            System.Web.HttpContext.Current.Session("test") = "test"
     
            Return Json(1)
     
        End Function
    Je lance mon site et à l'aide de firebug, j'appel les fonctions JS time(4000);time(1000); . Les deux se lancent en même temps et l'asynchrone fonctionne, la fonction de 1sec fini avant la fonction de 4sec.

    Je fait ensuite un appel de la fonction valider(); et je relance ensuite les fonctions time(4000);time(1000); . Et la c'est le drame, l'asynchrone ne fonctionne plus. Les 2 requêtes partent en même temps, mais celle de 2sec attend que celle de 4sec soit finie pour d'exécuter.

    SI je met en commentaire dans ma fonction valider côté VB l'accès en écriture à la session, l'asynchrone continu de fonctionner normalement.

    Pourquoi ????

    Dès que je fais une écriture dans la session, l'asynchrone ne fonctionne plus du tout.

    Problème avec le serveur .NET ? Problème avec le Controller ? Problème de mauvaise utilisation du MVC ?

    J'ai vu qu'il y avait un controller "AsyncController" pour MVC, c'est une piste ? J'ai fait des tests avec ça, je fait de l'asynchone en faisant des appel depuis le VB

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
        Public Sub PullAsync()
            AsyncManager.OutstandingOperations.Increment(2)
            test()
            test2()
        End Sub
     
        Public Function PullCompleted(ByVal msg As String, ByVal msg2 As String) As ActionResult
            Return Json(msg & msg2)
        End Function
     
        Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
        Function Time() As ActionResult
     
            Sleep(2000)
     
            Return Json(1)
     
        End Function
     
        Private ReadOnly _lock = New Object()
     
        Sub test()
     
     
            Dim webRequest__1 As System.Net.WebRequest = System.Net.WebRequest.Create("http://dev82:7000/Connexion/Time")
            webRequest__1.ContentType = "application/json"
            webRequest__1.Method = "POST"
            webRequest__1.ContentLength = 0
            webRequest__1.BeginGetResponse(Sub(result)
                                               Dim webResponse = webRequest__1.EndGetResponse(result)
                                               Dim stream As New System.IO.StreamReader(webResponse.GetResponseStream())
                                               Dim xml As String = stream.ReadToEnd()
                                               SyncLock _lock
                                                   AsyncManager.Parameters("msg") = xml
                                               End SyncLock
                                               AsyncManager.OutstandingOperations.Decrement()
     
                                           End Sub, Nothing)
     
        End Sub
     
        Sub test2()
     
     
            Dim webRequest__1 As System.Net.WebRequest = System.Net.WebRequest.Create("http://dev82:7000/Connexion/Time")
            webRequest__1.ContentType = "application/json"
            webRequest__1.Method = "POST"
            webRequest__1.ContentLength = 0
            webRequest__1.BeginGetResponse(Sub(result)
                                               Dim webResponse = webRequest__1.EndGetResponse(result)
                                               Dim stream As New System.IO.StreamReader(webResponse.GetResponseStream())
                                               Dim xml As String = stream.ReadToEnd()
                                               SyncLock _lock
                                                   AsyncManager.Parameters("msg2") = xml
                                               End SyncLock
                                               AsyncManager.OutstandingOperations.Decrement()
     
                                           End Sub, Nothing)
     
        End Sub
    Avec cette méthode, les deux appels de la fonction test() se font en même temps, le temps d'exécution de la requête "/Connexion/Pull" est bien de 2 sec.

    Mais le fonctionnement n'est pas du tout le même que celui que je recherche, je veux simplement de l'asynchronus avec ajax et Jquery.

    Je suis bloqué....

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,
    A priori le blocage vient de la Session et plus particulièrement du Session State
    Un article qui traite du sujet.

  3. #3
    Membre habitué Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Points : 162
    Points
    162
    Par défaut
    Donc on ne peut pas écrire dans la session et faire de l'asynchrone, c'est nul

    Merci beaucoup pour ces explications car je m'arrache les cheveux depuis 2 jours...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MVC3.2/JQuery] $.ajax() ou $.post() avec objets imbriqués
    Par CUCARACHA dans le forum ASP.NET MVC
    Réponses: 4
    Dernier message: 31/05/2012, 11h32
  2. AJAX et partial view en MVC3
    Par eternal_winds dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 01/12/2011, 13h04
  3. [MVC3/JQuery] Problème post ajax
    Par CUCARACHA dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 14/11/2011, 15h19
  4. Formulaire Ajax dans MVC3?
    Par john85 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 06/07/2011, 15h54
  5. Réponses: 2
    Dernier message: 07/04/2011, 17h13

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