1

クライアント側で WCF サービスへの ajax リクエストの処理中にエラーが発生しました。

 self.remove = function (dep, processingResult) {
            var data = { "id": dep };
            $.ajax({
                url: 'my.svc/remove',
                type: 'POST',
                contentType: 'application/json',
                dataType: "json",
                cache: false,
                data: JSON.stringify(data),
                complete: function (e, xhr, settings) {
                    var message = self.getMessage(e.status);                
                    switch (e.status) {
                        case 200:
                            processingResult();
                            break;                  
                        case 417:
                            console.log(e.statusText);
                            radalert(message + e.statusText, null, null, "417");
                            break;
                        default:
                            {
                                console.log(e.statusText);
                                radalert(message, null, null, "bekey");
                            }
                    }
                }
            });
        };

場合によってはエラー 417 が返されますが、IE9 は代わりに 12019 エラーで結果を取得します。IE10 を含む他のすべてのブラウザは正しい値を取得します。

なぜそれが起こり、どのように修正するのですか?

12019 - ERROR_INTERNET_INCORRECT_HANDLE_STATE 指定されたハンドルが正しい状態にないため、要求された操作を実行できません。

このコードを返すのはあまり良い習慣ではないようです。私は正しいですか?

  WebOperationContext ctx;
//....
  ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.ExpectationFailed;//417
//...
4

1 に答える 1

2

キャッシュをクリアしても問題が解決しない場合は、URLMon が特定の HTTP エラー ステータス コードをラップする方法に関連している可能性があります。たとえば、IE9 以下では、HTTP/204 応答が偽の 1223 ステータス コードに変換されます ( http://www.enhanceie.com/ie/bugs.aspを参照) 。

この問題は IE10 で修正され、サーバーの応答ステータスがスクリプトに正しく返されるようになりました。

于 2013-07-11T18:16:48.137 に答える