1

この構成で約5か月後、私は現在、一連の次のものを取得しています。

「アプリケーションプール「Classic.NETAppPool」にサービスを提供しているプロセスで、Windowsプロセスアクティベーションサービスとの致命的な通信エラーが発生しました。プロセスIDは「1640」でした。」

これはにつながります:

アプリケーションプール「Classic.NETAppPool」は、そのアプリケーションプールにサービスを提供しているプロセスで一連の障害が発生したため、自動的に無効になっています。

私の人生では、これを引き起こし始めた原因を理解することも、失敗の原因を見つけるためにさらに深く掘り下げる方法を理解することもできません。

最近(2週間前)、ソリューションにエンティティフレームワークを追加し始めました。これが発生する直前に、自己参照呼び出しが報告されたため、「スタックスペースが不足しています」というエラーが発生しました。私が書いたコードでそのような呼び出しを見つけることができず、EFが私の単純な(3テーブル)モデルに間違った結合を追加したのではないかと疑っています。

どこから探し始めるかについてのアイデアはありますか?AppPoolが失敗する原因は何ですか?

TIA


タイプ'System.StackOverflowException'の未処理の例外がmscorlib.dllで発生しました

このメソッドを呼び出して単一のレコードを取得する外部オブジェクトがあります。

public static AutoNegotiationDetails GetAutoNegotiationByCompany(Guid companyId)
{
    return RivWorks.Controller.Negotiation.GetAutoNegotiationByCompany(companyId);
}

そのメソッドは以下を呼び出します:

internal static AutoNegotiationDetails GetAutoNegotiationByCompany(Guid companyId)
{
    var autoNeg = from a in _dbRiv.AutoNegotiationDetails where a.CompanyId == companyId select a;
    var ret = autoNeg.FirstOrDefault();
    return ret;
}

ステップスルーでは、最初のメソッド内にブレークポイントを設定し、2番目のメソッドにステップインし、入力されたレコードを確認して、最初のメソッドに戻り、最後にメソッドを終了します。その時点で、StackOverflowエラーが発生するまで、IDEが数秒間ロックされます。

システム全体をより正確に把握するには、次のようにします。

  • IISマシンでWebOrb30を実行します。
  • VS IDE->プロセスへの接続(INETINFO.exe)
  • WebOrb30にログイン->管理コンソール->サービスエントリポイントにドリルダウン->入力ボックスにCompanyIDを入力->[呼び出し]をクリックします
  • VS IDEでブレークポイントに到達->(上記を参照)

EFの別の問題が原因である可能性があります。詳細については、C#-EntityFramework-タイプ'System.StackOverflowException'の未処理の例外がmscorlib.dllで発生したを参照してください。

4

2 に答える 2

0

1 つのアプリ プールを使用している 2 つのアプリ/サイトがあるかもしれませんが、アプリ/サイトは異なる .net バージョンを実行しています。

これは当てはまらないかもしれませんが、iisでこれまでに発生した唯一の同様の問題です。

于 2010-01-14T20:36:06.330 に答える
0

Entity Framework のバグが原因で、関係の 1 つに循環呼び出しが発生していました。これにより、一般的なエラーとして WebOrb に報告されたスタック オーバーフローが発生し、WebOrb が停止してアプリケーション プールがクラッシュしました。(私はまだすべての詳細を完全には理解していません)。リレーションシップなしで EF モデルを再構築すると、動作がなくなりました。(はぁ/)

EF は別の質問 (または一連の質問) になります。

于 2010-01-19T20:31:13.883 に答える