我有一個關於ASP.NET 5 MVC C#中的臨時文件的問題。 我想生成一個ics文件,然後將其存儲爲一個臨時文件,使用郵件發送它,然後刪除該文件。 我試圖在我的本地主機。我正在啓動應用程序,然後執行API GET調用(通過瀏覽器.... net/api /引號),並在GET方法中啓動sendMailWithIcal方法。在我調用API之後,我停止了Visual Studio中的應用程序。用TempFileCollection刪除ASP.NET MVC C#中的臨時文件
通過搜索stackoverflow,我發現TempFileCollection。問題是我發送郵件後無法刪除文件。我嘗試在兩種不同的方式,以 「System.IO.File.Delete(路徑)」 或 「tempFiles.Delete()」:
public void SendMailWithICal(string receiver, string subject, string textBody)
{
this._msg = new MailMessage(UserName, receiver);
this._msg.Subject = subject;
this._msg.Body = textBody;
CalenderItems iCalender = new CalenderItems();
iCalender.GenerateEvent("Neuer Kalendereintrag");
var termin = iCalender.iCal;
using (var tempFiles = new TempFileCollection())
{
tempFiles.AddFile("TempIcsFiles/file3.ics", false);
System.IO.File.WriteAllText("TempIcsFiles/file3.ics", termin.ToString());
Attachment atm = new Attachment("TempIcsFiles/file3.ics");
this._msg.Attachments.Add(atm);
System.IO.File.Delete(("TempIcsFiles/file3.ics")); //Either i try this
//tempFiles.Delete(); //or this
}
this._smtpClient.Send(_msg);
}
如果我有System.IO.File嘗試。刪除,我收到一個異常,它無法訪問文件,因爲它被另一個進程使用。如果我使用tempfiles.Delete(),沒有例外,它會發送郵件,但文件不會從文件夾TemprocsFiles中刪除wwwroot文件夾內
感謝您的幫助。
編輯: 我試圖解決Mikeal Nitell與此代碼:
var termin = iCalender.iCal;
using (var tempFiles = new TempFileCollection())
{
tempFiles.AddFile("TempIcsFiles/file6.ics", false);
//tempFiles.Delete();
System.IO.File.WriteAllText("TempIcsFiles/file6.ics", termin.ToString());
Attachment atm = new Attachment("TempIcsFiles/file6.ics");
this._msg.Attachments.Add(atm);
this._smtpClient.Send(_msg);
this._msg.Dispose();
atm.Dispose();
}
System.IO.File.Delete(("TempIcsFiles/file6.ics"));
現在我接受,因爲另一個進程正在使用它,已經與「系統行,我不能訪問該文件IOException異常。 IO.File.WriteAllText(...)「
如果我取消註釋此行,我會收到一個FileNotFoundException一行後面的初始化附件。
感謝您的答覆,我嘗試過,但仍有一些問題。我編輯了我的問題。 – davidrue