2014-10-31 93 views
0

我已經將文件寫入了指定的文件夾。將它寫入文件夾後,我將該文件附加到郵件。將該文件附加到郵件後,我想要刪除該文件夾。但文件夾未被刪除,並拋出異常爲「該進程無法訪問該文件,因爲它正在被另一個進程使用」進程無法訪問該文件,因爲它正在被另一個進程使用(要刪除文件夾)

這是我的代碼。

 public HttpResponseMessage SendChannelPartenersMessage(string Name,string FirmName,string Address, string Email,string Mobile)           
    { 
     var httpRequest = HttpContext.Current.Request; 
     ContactUs contactUs = new ContactUs(); 
     contactUs.Address = Address; 
     contactUs.Name = Name; 
     contactUs.FirmName = FirmName; 
     contactUs.Email = Email; 
     contactUs.Mobile = Mobile; 

     try 
     { 
      if (httpRequest.Files.Count > 0) 
      { 
       contactUs.AttachFileName = WriteAttachedFile(httpRequest, contactUs.Email); 

       if (ContactUsService.SendChannelPartenersMessage(contactUs)) 
       { 
        var fileToBeDeleted = contactUs.AttachFileName; 
        var deleteFile = DeleteAttachedFile(contactUs.AttachFileName); 
       } 
       return Request.CreateResponse(HttpStatusCode.OK, contactUs); 
      } 
      else 
      { 
       return Request.CreateResponse(HttpStatusCode.BadRequest); 
      } 

     } 
     catch (Exception e) 
     { 
      throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) 
      { 
       Content = new StringContent("An error occurred, please try again or contact the administrator."), 
       ReasonPhrase = "Critical Exception" 
      }); 
     } 
    } 

    private string WriteAttachedFile(HttpRequest httpRequest, string FileName) 
    {   
     var postedFile = httpRequest.Files[0]; 
     var directoryPath = System.Configuration.ConfigurationManager.AppSettings["FolderPath"].ToString() + FileName + "\\\\"; 
     var filePath = directoryPath + postedFile.FileName; 
     Directory.CreateDirectory(directoryPath); 
     postedFile.SaveAs(filePath); 
     var Path = filePath.Replace("\\", "/"); 
     return (Path); 
    } 

    private bool DeleteAttachedFile(string FileName)  
    { 
     if (System.IO.File.Exists(FileName)) 
     { 
      System.IO.File.Delete(FileName); 
     } 

     string[] words = FileName.Split('/'); 
     string directoryPath = words[words.Length - 2]; 

     if (Directory.Exists(directoryPath)) 
     { 
      Directory.Delete(directoryPath); 
     } 
     return (true); 
    } 
+0

有什麼問題? – 2014-10-31 05:28:55

+0

我爲寫入創建的文件夾未被刪除。相反,它會引發異常:進程無法訪問文件,因爲它正在被另一個進程使用。 – user3687566 2014-10-31 05:35:54

回答

0

這是因爲您通過郵件發送的文件仍然沒有在接收端被下載。甚至在通過Skype發送文件甚至複製到USB記憶棒時也會發生這種情況。確保文件已下載到接收端

+0

但用戶可能無法下載郵件。怎麼處置?最新的解決方案? – user3687566 2014-10-31 05:37:31

+0

@ user3687566我相信收件人並不是郵件被使用者的用戶。應首先將文件上傳到郵件服務器。 – 2014-10-31 05:39:06

+0

物理上轉到您發送郵件的郵件帳戶,刪除發送的郵件。 – SanyTiger 2014-10-31 05:40:37

相關問題