したがって、基本的には、任意のディレクトリで zip ファイルをスキャンし、それを FTP サーバーにアップロードする Windows サービスを作成します。txt ファイルに書き込み、すべてのログを保持することを想定したトレース メソッドを追加しました。サービスを Windows にリリースすると、問題が発生します。イベント ビューアにエラー メッセージが表示されます (EventLog クラスを使用して LogEvent を追加しました)。
System.IO.IOException: 別のプロセスで使用されているため、プロセスはファイル 'C:\Windows\system32\traceLog.txt' にアクセスできません。
トレースを行うコードは次のとおりです
private void EscribirTrace(string mensaje)
{
if (Tracing)
{
try
{
using (FileStream archivo2 = new FileStream(string.Format("{0}\\traceLog.txt", Environment.CurrentDirectory), FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
mensaje = string.Format("{0} - {1} \r\n", DateTime.Now, mensaje);
StreamWriter writer = new StreamWriter(archivo2);
writer.WriteLine(mensaje);
writer.Flush();
writer.Dispose();
}
}
catch (Exception ex)
{
LogEvent("Error en escribir tracing", ex);
}
}
}
任意のアイデアをいただければ幸いです
編集そのため、いくつかの調査の結果、そのsystem32はファイルに最適な場所ではないことがわかりました。私の意図は、サービスがインストールされたパスにそのログ ファイルを配置することでした。いくつかの調査の後、私は
Enviroment.CurrentDirectory
為に
Path.GetFullPath(System.Reflection.Assembly.GetExecutingAssembly().Location).Replace(
Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().Location)
文字列にフォーマットされます。
残りはかなりうまくいきました。
回答ありがとうございます。