0
進程無法訪問文件'文件路徑',因爲它正在被另一個進程使用。使用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);
}
}
我的理解是,File.AppendAllText將動作,以使後關閉爲什麼我得到了這個錯誤
當您爲每個Web請求寫入文件時,您需要處理可能發生的爭用情況。如果兩個請求或多或少同時發生,它們都將嘗試同時寫入文件。 – abydal
無需檢查Dir是否存在。 Directory.CreateDirectory將返回現有的目錄或創建一個新的目錄(如果路徑有效) –
你從哪裏調用這個函數? – martennis