0

正常に動作する JSON を返す VB.net Web サービスがあります。ただし、応答が一定のサイズに達すると、クライアント ブラウザは、サーバーが接続を閉じてデータを送信しなかったことを通知します。これは、IE、Chrome、または Firefox を使用する場合に当てはまります。魔法のサイズは、約 16383 レコード、または約 1.13MB のデータのようです。これは Web サービスとしては少し大きいことは承知していますが、今はこれで進んでください。

接続が閉じられただけです。つまり、サーバーからの 500 またはその他のエラーではありません。IIS 7.5 および IDE からの ASP.net 開発サーバーでも同じ動作が見られます。

firebug、fiddler、およびwiresharkを使用すると、サーバーが接続を閉じていることが示されているようです。

デバッグ モードを使用して IDE でこれを実行できるため、サービスをステップ実行して、サービスが呼び出され、データベースが呼び出され、すべてのレコードが適切に取得され、サブルーチンが正常に終了することを確認できます。また、これがデータの問題ではないことも確認しました。

トレースを試みるために、このパラメーターを system.web に追加しました。

Web サービスを実行すると、Trace.axd は結果を 200 と表示するため、Web サーバーは満足しているように見えますが、接続はまだ閉じられています。ただし、このトレースはあまり詳細を示していません。

サーバーまたはクライアントがこのように接続を閉じる既知の理由はありますか? この方法で IIS を使用する既知の応答サイズ制限はありますか? これをよりよく追跡する方法はありますか?

どうもありがとう。

4

1 に答える 1

1

私はこれを理解したと思います。私が問題を見つけた方法は、WCF トレース (msdn.microsoft.com/en-us/library/ms733025.aspx) を使用することです。このエラーが発生していました: オブジェクト グラフでシリアル化または逆シリアル化できるアイテムの最大数は '65536' です。オブジェクト グラフを変更するか、MaxItemsInObjectGraph クォータを増やしてください。だから私はそれが言ったことをやり、MaxItemsInObjectGraph を上げて問題を解決しました。16383 個のアイテムにはすべて 3 つのフィールドがあるため、数学がどのように機能するかはわかりません。したがって、49149 個のオブジェクトである必要がありますが、何でも構いません。これをアップすると、この問題は解決しました。

于 2012-03-01T18:31:04.603 に答える