プロセスが別のプロセスで使用されているため、 'ファイルパス'ファイルにアクセスできません。File.AppendAllText()を使用した後に別のプロセスが使用しているファイル
私が発見したこれら2質問
File being used by another process after using File.Create()
と
Does File.AppendAllText close the file after the operation
これは私が持っているとしていますすべての要求となった結果を保存する必要があるAPIアウト、 複数のリクエストがある可能性があります。 マイコード
public static void SaveTheRequestAndResponse(string type, SearchRequest searchRequest = null, dynamic result = null)
{
var FilePath = AppDomain.CurrentDomain.BaseDirectory + @"SearchRequest";
bool exists = Directory.Exists(FilePath);
if (!exists)
{
var stream = Directory.CreateDirectory(FilePath);
}
if (type == "request")
{
string Space = ", ";
StringBuilder request = new StringBuilder();
request.Append("Search Id : " + searchRequest.ID);
request.Append(Space + "Company Name : " + searchRequest.CompanyName);
request.Append(Space + "Country Code : " + searchRequest.CountryCode);
request.Append(Space + "Search Type : " + searchRequest.SeacrhType);
request.Append(Space + "Request Time : " + DateTime.Now + Environment.NewLine);
var DataToBeSave = request.ToString();
System.IO.File.AppendAllText(FilePath + @"\" + "FileNAme" + DateTime.Now.ToString("dd-MM-yyyy") + ".txt", DataToBeSave + Environment.NewLine);
}
else
{
string Space = ", ";
StringBuilder SearchResult = new StringBuilder();
SearchResult.Append("The result for Request" + Space);
SearchResult.Append("Search Id : " + searchRequest.ID + Space);
SearchResult.Append("States Code : " + result.StatusCode + Space);
SearchResult.Append("Result Time : " + DateTime.Now + Environment.NewLine);
var DataToBeSave = SearchResult.ToString();
System.IO.File.AppendAllText(FilePath + @"\" + "FileNAme" + DateTime.Now.ToString("dd-MM-yyyy") + ".txt", DataToBeSave + Environment.NewLine);
}
}
私の理解は、私はこのエラーが出るん
Webリクエストごとにファイルに書き込むときに発生する競合状態を処理する必要があります。 2つの要求が多かれ少なかれ同時に発生すると、両方の要求が同時にファイルに書き込もうとします。 – abydal
Dirが存在するかどうかを確認する必要はありません。 Directory.CreateDirectoryは、既存のディレクトリを返すか、新しいパスを作成します(パスが有効な場合) –
どこからこの関数を呼び出していますか? – martennis