2015-09-11 33 views
0

我需要將CSV文件上載到Azure服務器上的ASP.NET應用程序。雖然它的工作原理我的本地機器上的罰款,上傳到​​服務器時拋出了以下錯誤:「進程無法訪問該文件,因爲它正在被另一個進程使用」

「進程無法訪問文件 ‘C:\的Inetpub \ wwwroot的\ ImportFiles \ 9_11.csv’,因爲它正在使用的 另一個進程」

我的代碼:

 string fileName = DateTime.Now.ToString().Replace(':', '_').Replace('/', '_').Replace(' ', '_') + Convert.ToString((new Random()).Next(0, 999) * (new Random()).Next(0, 999)); 
     string path = Server.MapPath("ImportFiles") + "\\" + fileName + "" + FileImport.FileName.Substring(FileImport.FileName.IndexOf('.')); 
     FileImport.SaveAs(path); 
     string pathforSeconStream = path; 
     try 
     { 
      Response.Write("<script> alert('In Try Block');</script>"); 
      bool flag = true; 
      int visiblemessageCount = 0; 
      int rollNo = 1; 
      StreamReader ColLine = new StreamReader(path); 
      string ColInputline = ColLine.ReadLine(); 
      String[] ColsInput = ColInputline.Split(','); 
      ColLine.Close(); 
      ColLine.Dispose(); 
      string preFix = "", RollNumber = ""; 
      StreamReader sr = new StreamReader(pathforSeconStream); 
} 
catch(Exception ex) 
{ 
} 

回答

2

的代碼來生成一個唯一的文件名是錯誤的。使用Path.GetTempFileName

PS絕不吃東西。請刪除catch (Exception ex) {};

修訂

而不是FileImport.Save(...)只保存請求在MemoryStream,然後在它的工作。

+0

謝謝, 但我需要將該文件保存在兩個流對象進行進一步processing.First我保存流在對象「ColLine」和第二我保存在「sr」對象流...但它通過錯誤消息,雖然它工作完全在我的開發機器上。 – Shahab

+0

@Shahab你所顯示的代碼在'try'塊中沒有做任何事情。如果還有更多的代碼沒有顯示出來,你總是可以重置「MemoryStream」的當前位置。 –

+0

有很多代碼,我不能過去,這使得我的問題使用較少沒有人想通過匹配兩個數組列表值後執行一個查詢的方式來閱讀很多代碼。 – Shahab

相關問題