2013-06-25 8 views
7

NOTA: In riferimento a questo sito http://www.redbullracingshop.com.au/angolare js 204 risposta di blocco in IE10

Ho un .net WebAPI correre insieme con l'interazione $ angolare .http sul front-end. Un cliente ha recentemente affermato che la funzionalità dinamica del sito ha smesso di funzionare in IE.

Dopo aver eseguito il codice in alcuni browser e aver guardato le richieste. L'ho notato in IE. La richiesta Post era sospesa o "in attesa" per circa 2 minuti prima di restituire un risultato al cliente. Ho eseguito il codice con un punto di interruzione sul server e il javascript per trovare dove si stava bloccando, e ho scoperto che la richiesta si attiva e il codice del server viene eseguito come previsto. Niente sta stallo qui.

SERVER frammento

[AcceptVerbs("POST")] 
public void AddToCart(JObject jsonData){ 
    // DO CODE 
} 

Sto tornando una risposta nulla o 204. Questo è quello che mi aspettavo e non considero questo come un errore. Da qualche parte tra il server che risponde e il client che riceve la risposta, c'è uno stallo di 2 minuti?

È forse un errore angolare?

CLIENTE frammento

this.post = function (url, data, success, fail) { 
    fail = (fail !== undefined) ? fail : success; 
    $http.post(url, data) 
     .success(function (data) { 
      if (data.length == 0) { 
       success(onEmpty(url)); 
      } else { 
       success(data); 
      } 
     }) 
     .error(function (data) {    
      fail(onError(url, data)); 
     }); 
} 

Ho indagato e ha scoperto che questo sta accadendo solo in IE10 e non la versione attuale della versione precedente, si è opposto alla versione emulata dalla console dev.

Sono consapevole che IE sta facendo alcune cose interessanti con 204 risposte, e questo potrebbe essere cambiato in IE10. Se qui https://github.com/angular/angular.js/issues/357?source=cc

I risultati ispettore di rete sono i seguenti:

/api/CartApi/addToCart | POST | 204 | 295 B | 384,76 s | XMLHttpRequest

Qualsiasi idea? Se tutto il resto fallisce dovrò provare a convertire tutte queste risposte WebAPI vuote a stringhe vuote forse.

+1

Quale versione di angolare stai usando? – Scottux

+0

//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js –

+2

Hai seguito le istruzioni presenti in questa [guida] (http://docs.angularjs.org/guide/ie) – callmekatootie

risposta

2

Per ora la soluzione migliore che ho è una soluzione. Non utilizzare una risposta di annullamento risultante in un 204, invece restituire una risposta HttpStatusCode.OK (200) manuale.

[AcceptVerbs("POST")] 
public HttpResponseMessage AddToCart(JObject jsonData){ 
    // DO CODE 
    return request.CreateResponse(HttpStatusCode.OK); 
} 

Sono ancora curioso di una spiegazione su questo bug.

Problemi correlati