“进程无法访问该文件,因为它正由另一个进程使用”

时间:2015-09-11 10:50:52

标签: c# asp.net excel streamreader data-import

我需要将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)
{
}   

1 个答案:

答案 0 :(得分:2)

生成唯一文件名的代码是错误的。使用Path.GetTempFileName

PS 永远不会吃一个例外。请删除catch (Exception ex) {};

<强>修订

而不是FileImport.Save(...)只需将请求保存在MemoryStream中,然后继续处理。