2012-09-05 54 views
0

因此,我有一些代碼允許用戶將某些Excel電子表格導入數據庫。現在,我的文件的副本保存到服務器,所以我可以讀取它:IO.File.Delete不會刪除,但不會發生錯誤

fupMYfile.SaveAs(System.IO.Path.Combine(target, fupMYfile.FileName)); 

所以一切運作良好那裏,直到我試圖刪除文件時,我用它做。我沒有收到和錯誤,我已經檢查了代碼被調用,但是,它不會刪除該文件,並不會給出錯誤。

System.IO.File.Delete(target + fupMYfile.FileName); 

我確實嘗試確保IIS_IUSRS具有完全訪問該文件夾,所以我知道這不是問題。

有人有什麼想法嗎?

感謝

+0

處於'try' BL刪除代碼用空的'catch'敲?你有沒有調試過,看到這條線被擊中? – Oded

+3

爲什麼你在第一個實例中使用'Path.Combine',而不是在第二個中是否有特殊的原因?你有寫'目標+ fupMYfile.FileName'到日誌以確保值是正確的嗎?如果該文件不存在,該方法不會引發異常。 –

+0

你檢查過路徑嗎?你是否檢查過該文件是否正確創建? –

回答

7

您沒有使用相同的文件名。您正在保存的內容類似c:\somefolder\somefile.xls,然後您嘗試在c:\somefoldersomefile.xls處將其刪除。

使用Path.Compbine把文件夾NAMD和文件名一起:

System.IO.File.Delete(System.IO.Path.Combine(target, fupMYfile.FileName)); 
+0

你在做一個假設。這可能是正確的,但請記住'target'可能有一個尾部'\\',或'fupMYfile.FileName'可能有一個前導'\\'。 –

+0

是的,這是一個假設,但是一個很好的假設。我們有贏家,贏家,雞晚餐!添加組合解決了問題。 – Limey

0

File.Delete沒有給出任何異常,因此將不會引發錯誤,我們需要充分的絕對路徑

File.Delete("C:\temp\tmpFile.txt"); 

,而不是

File.Delete("tmpFile.txt"); 
相關問題