今日この問題に遭遇しました。 IISからプロセスを開始して標準出力とエラー出力をリダイレクトして、プロセスが終了したときにログを生成できるようにしました。私のマシンではすべてがうまく動いていましたが、私が出版したあまりよくありませんでした。リダイレクトされた出力が比較的大きいときにプロセスがハングアップしました
このプロセスはちょっとした間働いてから終了すると思われますが、それはできません。単にソケットのようなリソースを保持して応答を停止するだけです。しばらくして、私は問題の原因を特定することができました。生成されるログは大きすぎました。実行中のプロセスからConsole.WriteLine
をコメントした後、すべてうまくいった。ちょうど私がプロセスを開始した方法を明確にするための
:
Process process = new Process();
process.StartInfo.FileName = path;
process.StartInfo.Arguments = arguments;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.EnableRaisingEvents = true;
process.Exited += Process_Exited;
process.Start();
そして、どのように私はそれが終了します取り扱わ:
private static void Process_Exited(object sender, EventArgs e)
{
Process process = (Process)sender;
File.WriteAllText(path, process.StandardOutput.ReadToEnd() +
"\r\nEXCEPTIONS\r\n" + process.StandardError.ReadToEnd());
}
私はすでにそれを修正する方法を知っているにもかかわらず、私はまだしたいのですが本当に何が起こったのか、そしてなぜそれが起こったのかを知ってください。私が望むほど大きなログを作成する方法がなければならないからです。
私はそれが本当に何が起こったと信じています!答えはドキュメントにありました。私のことは恥です。返信いただきありがとうございます! –