2013-06-25 8 views
7

UWAGA: W odniesieniu do tej strony http://www.redbullracingshop.com.au/kątowej js 204 odpowiedzi blokując w IE10

mam .net WebAPI uruchomiony wraz z kątowym $ .http oddziaływania na przednim końcu. Ostatnio klient wspomniał, że dynamiczna funkcja witryny przestała działać w IE.

Po uruchomieniu kodu w kilku przeglądarkach i obejrzeniu żądań. Zauważyłem to w IE. Żądanie Post zostało zawieszone lub "oczekuje" na około 2 minuty przed zwróceniem wyniku do klienta. Przeszukałem kod z pewnym punktem przerwania na serwerze i javascriptem, aby znaleźć miejsce, w którym się blokował, i odkryłem, że żądanie jest uruchamiane poprawnie, a kod serwera jest wykonywany zgodnie z oczekiwaniami. Nic tutaj nie zwleka.

SERWER fragment

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

Wracam odpowiedź nieważne, czy 204. To jest to, czego oczekuję i nie biorą pod uwagę, że jest to błąd. Gdzieś pomiędzy odpowiedzią serwera a klientem, który otrzymał odpowiedź, jest 2-minutowa przerwa?

Czy to może być błąd kątowy?

KLIENT fragment

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)); 
     }); 
} 

ja zbadali i stwierdzili, że to się dzieje tylko w IE10 i nie rzeczywistą wersję poprzedniej wersji przeciwieństwie do emulowane wersji z konsoli dev.

Mam świadomość, że IE robi kilka interesujących rzeczy z 204 odpowiedziami, a to mogło się zmienić w IE10. Se tu https://github.com/angular/angular.js/issues/357?source=cc

Wyniki inspektor sieciowe są następujące:

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

Jakieś pomysły? Jeśli wszystko inne zawiedzie, będę musiał spróbować przekonwertować wszystkie te puste odpowiedzi WebAPI na puste ciągi.

+1

Którą wersję kątową używasz? – Scottux

+0

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

+2

Czy postępowałeś zgodnie z instrukcjami zawartymi w tym [podręczniku] (http://docs.angularjs.org/guide/ie) – callmekatootie

Odpowiedz

2

Na razie najlepsze rozwiązanie, jakie mam, to praca wokół. Nie używaj pustej odpowiedzi powodującej błąd 204, zamiast tego zwracaj ręczną odpowiedź HttpStatusCode.OK (200).

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

Nadal jestem ciekawy wyjaśnienia tego błędu.

Powiązane problemy