pradeep manne Ответов: 5

Процесс не может получить доступ к файлу, поскольку он используется другим процессом


привет,
я получаю ошибку процесс не может получить доступ к файлу, потому что он используется другим процессом при загрузке файла в папку.когда я работаю над visualstudio его wroking но он дает вышеуказанную ошибку когда я копирую приложение в IIS
это мой код.

if (FileUpload1.HasFile)
        {


            try
            {


               string folder_from_config = ConfigurationManager.AppSettings["FileUploadFolder"].ToString();
               if (System.IO.File.Exists(Server.MapPath(folder_from_config) + "\\" + System.IO.Path.GetFileName(FileUpload1.FileName)))
               {

                   System.Windows.Forms.MessageBox.Show("File already exists. Do you want to overwrite");
               }

                FileUpload1.SaveAs(Server.MapPath(folder_from_config) + "\\" + System.IO.Path.GetFileName(FileUpload1.FileName));
                LabelUpload.Text = FileUpload1.FileName;
                Session["Input_Data_Excel_File"] = Server.MapPath((folder_from_config) + "\\" + System.IO.Path.GetFileName(FileUpload1.FileName));

            }

            catch (Exception ex)
            {

                errormsg.Text += "ERROR: " + ex.Message.ToString();
            }

5 Ответов

Рейтинг:
37

pradeep manne

привет,

важно отметить, что мы должны всегда закрывать соединения после чтения книги Excel, чтобы избежать следующей ошибки

The process cannot access the file '\Path\; because it is being used by another process.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.IOException: The process cannot access the file '\Path\; because it is being used by another process.


Рейтинг:
2

Dylan Morley

Еще одна проблема с вашим кодом...

if (System.IO.File.Exists(Server.MapPath(folder_from_config) + "\\" + System.IO.Path.GetFileName(FileUpload1.FileName)))
   {

       System.Windows.Forms.MessageBox.Show("File already exists. Do you want to overwrite");
   }


Вы не должны использовать систему.Окна.Forms.MessageBox в ASP.Сетевое приложение. Как только он будет развернут на веб-сервере, клиент, который загружает файл, не увидит окно сообщения

Вы выполняете почтовую операцию при отправке файла - если вы хотите, чтобы клиент увидел какое-то сообщение, вы должны отправить ответ. Вы не можете просто использовать MessageBox!

Возможно, вы могли бы зарегистрировать javascript для запуска на клиенте, используя эту страницу.ClientScript.Синтаксис RegisterStartupScript


pradeep manne

привет, у меня есть комментарий,что окно сообщения все еще получает ошибку, когда я загружаю его в первый раз, он работает правильно
Процесс не может получить доступ к файлу, поскольку он используется другим процессом

Рейтинг:
1

R. Giskard Reventlov

Прочитать этот[^]. Это, скорее всего, проблема с разрешениями.


#realJSOP

Я думаю, что если бы это было так, он получил бы совершенно другое исключение.

Рейтинг:
1

S V Saichandra

Наиболее вероятным может быть то, что файл, который вы загружаете, уже открыт или используется. Вы можете открыть Диспетчер задач и проверить наличие файла. Вы можете закрыть любой другой файл, который может иметь доступ к нему, и попробовать загрузить его снова.


Рейтинг:
0

#realJSOP

Файл уже (исключительно) открыт другим процессом. Что вы пытаетесь загрузить Web.Config или что-то в этом роде?


fjdiewornncalwe

Это должно быть не только что-то вроде web.config. Я столкнулся с этим при развертывании на сервере во время вызова приложения, и в этом случае сами сборки также блокируются.