7

注: この Web サイトhttp://www.redbullracingshop.com.au/を参照してください。

フロントエンドで角度のある $.http インタラクションとともに .net WebApi を実行しています。クライアントは最近、サイトの動的機能が IE で動作しなくなったと述べました。

いくつかのブラウザでコードを実行し、リクエストを監視した後。IEで気付きました。Post リクエストは、クライアントに結果を返す前に、約 2 分間ハングまたは「保留中」でした。サーバー上のいくつかのブレークポイントと JavaScript を使用してコードを実行し、コードがロックされている場所を見つけたところ、リクエストが正常に起動し、サーバー コードが期待どおりに実行されることがわかりました。ここで行き詰まっているものは何もありません。

サーバースニペット

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

void 応答または 204 を返しています。これは私が期待しているものであり、これをエラーとは考えていません。サーバーが応答してからクライアントが応答を受信するまでの間に、2 分間の停止がありますか?

これは多分角度エラーですか?

クライアントスニペット

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

私が調査したところ、これは IE10 でのみ発生しており、開発コンソールからエミュレートされたバージョンとは対照的に、以前のバージョンの実際のバージョンでは発生していないことがわかりました。

IE が 204 応答で興味深いことを行っていることは知っていますが、これは IE10 で変更されている可能性があります。ここを参照https://github.com/angular/angular.js/issues/357?source=cc

ネットワーク インスペクターの結果は次のとおりです。

/api/CartApi/AddToCart | 投稿 | 204 | 295B | 384.76 秒 | XMLHttpRequest

何か案は?他のすべてが失敗した場合は、これらすべての無効な WebAPI 応答を空の文字列に変換してみる必要があります。

4

1 に答える 1

2

今のところ、私が持っている最善の解決策は回避策です。204 になる void 応答を使用しないでください。代わりに、手動の HttpStatusCode.OK (200) 応答を返します。

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

私はまだこのバグの説明に興味があります。

于 2013-09-04T00:49:20.603 に答える