0

実行に時間がかかる複雑なアクションがあります。

データの小さなサブセットに対して実行すると、完全に機能し、必要なページが生成されます。

大量のデータを処理し、処理時間が数分を超える場合、クライアント マシンでページがまだ要求されているように見えますが、(スタック トレースを介して) 「View( を返す」必要があることがわかっています。モデル);"。

なぜこれが起こっているのでしょうか?私は完全に途方に暮れています。すべてのタイムアウトを数時間 (アプリ プールで利用可能なものを含む) に延長してみました。

これは、Chrome、IE、Safari、および Firefox のいくつかの異なる Windows PC で試行されているため、ブラウザーの問題ではありません。

編集

これは、まったく異なることが起こっているアプリケーションの複数の場所で発生します。ただし、すべてのコードは両方に対して実行されます。

4

4 に答える 4

2

View(model)を呼び出す前に、モデルには実際に期待されるすべてのデータが含まれていますか?

IQuerableまたはIEnumerableプロパティでToList()を呼び出すと、期待されるデータが返されますか?

先に進むには、もう少しコードを投稿する必要があります。


編集:

先に進むにはまだ十分な情報がありませんが、ここにいくつかのデバッグのヒントがあります。

あなたのパスはブラウザ->ウェブサーバー->データベースです

View(model)を呼び出す前に、すべてのデータがモデルオブジェクトで実体化されていることが確実な場合は、問題がWebサーバー->データベース接続にあるのではないと想定できます。

したがって、問題がブラウザ-> Webサーバーの間にある場合は、さらにいくつかの可能性があります。

  • 大企業システムについておっしゃっていますが、プロキシが関係していますか?直接接続でテストできますか?

  • ブラウザに返されるものはありますか?Webサーバーのポート80にtelnetで接続して、リクエストを発行できますか?何か戻ってきますか?

  • ブラウザプロセスを監視している場合、それは何かをしていますか?procexpを使用すると、各スレッドが何をしているのかを確認できます。ブラウザはアイドル状態ですか、それともCPUを使用してメモリを使い果たしているのでしょうか。

  • リクエストを傍受している可能性のある他のプロセスはありますか?一部のウイルス対策製品では、特定のページのレンダリングが妨げられる場合があります。アンチウイルスを無効にして、何かが変わるかどうかを確認できますか?

  • サーバーを監視して何が起こっているかを確認しようとしましたか?処理は行われていますか(おそらくメモリ使用量も増加します)?

于 2012-05-02T16:42:18.137 に答える
1

まったく別のデザインを検討するかもしれません。

  1. クライアントがサーバーにジョブを送信します
  2. サーバーが長時間実行操作のバックグラウンド処理を開始する
  3. サーバーはジョブIDをクライアントに返します
  4. クライアントはジョブIDを使用して、サーバーにジョブステータスを定期的に照会します
  5. ジョブが終了すると、クライアントは結果をHTMLまたはデータ(JSONなど)として要求し、それがレンダリングされます。
于 2012-05-02T16:41:49.923 に答える
0

IISには処理タイムアウトがあります。これに達すると、リクエストが処理パイプラインのどのステージにあるかに関係なく、処理スレッドは終了します。web.configで指定された処理タイムアウトを増やしてみてください。

<httpRuntime executionTimeout="90"  />

詳細については、 MSDNを参照してください。この制限はすべてのページに適用されるため、このルートを進む場合は注意が必要です。

于 2012-05-02T16:39:24.557 に答える
0

私はあなたのコードを見たことがありませんが、私の知識に基づいた推測では、非同期コントローラーを試して使用することです(ajaxを介して行われる要求の有無にかかわらず:-)。明らかに、長時間実行されるタスクであるため、おそらく最適化することもできます。時間を短縮するための並列処理による処理:ここから始めるとよいでしょう http://msdn.microsoft.com/en-us/library/ee728598.aspx

于 2012-05-02T18:51:40.833 に答える