私は今日この問題に遭遇しました、そしてそれを理解するのにかなりの時間がかかりました。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());
}
修正方法はすでに知っていますが、実際に何が起こったのか、そしてその理由を知りたいのです。好きなだけ大きなログを作成する方法が必要だからです。