Перемещение файлов на стороне сервера с помощью веб-сервиса - PullRequest
1 голос
/ 13 июля 2011

Я работаю над требованием, которое имеет следующую логику.код находится в C # и .NET CF 3.5

  1. Загрузка некоторых файлов с мобильного устройства на веб-сервер.

  2. , если загрузка прошла успешнофайл перемещается в архивную папку на мобильном устройстве.

  3. Загрузка некоторых файлов с сервера на мобильное устройство.

  4. Когдазагрузка прошла успешно, файл необходимо переместить в заархивированную папку на стороне сервера, чтобы не загружать тот же файл снова.

Написал веб-службу (asmx)справиться с этой операцией.Загрузка и загрузка работает нормально.

Веб-служба использует функцию FileInfo.MoveTo () для перемещения файла из загруженной папки в архивы на веб-сервере.

Это работает локально нормально (когда веб-служба и клиент, вызывающий веб-службу, размещены на одном компьютере), но при развертывании на сервере я получаю сообщение «процесс не может получить доступ к файлу, поскольку он используется другим процессом».

Я дал необходимые разрешения учетной записи IIS на стороне сервера.Я хотел бы знать, можно ли вообще этого добиться с мобильного устройства или есть какой-либо другой способ вызвать этот вызов на мобильном устройстве.Мне нужно выполнить этот метод сразу после загрузки файла.

Пример кода прилагается.

fileEntriesD = SomeWebService.FilesList();

        string[] extractedFiles = fileEntriesD.Split(',');

        foreach (string fileName in extractedFiles)
        {
            //dothe file downloading
            //code comes here.......   
        }

        //move the file on the server once all the files are downloaded

        foreach (string DumpfileName in extractedFiles)
        {
          //after the download is complete move the file to the archived folder
          string MoveFileOnServerStatus;
          MoveFileOnServerStatus = SomeWebService.MoveFileToArchive(DumpfileName);
          MessageBox.Show(MoveFileOnServerStatus);
        }

код для WebMethod для MoveFileToArchive (DumpfileName)

   [WebMethod(Description="move the file to the archive location")]
   public string MoveFileToArchive(string fileArchiveName)
   {
        try
        {
            string SerPathD = GetLocationOfFiles + "\\" + "ArchivedDispatchedFiles";

            FileInfo MFTA = new FileInfo(SerPathD + "\\" + fileArchiveName);

            MFTA.MoveTo(SerPathD + "\\" + fileArchiveName);
        }
        catch(IOException ex)
        {
            //if there is any error then return the error message.
               return ex.Message.ToString();
        }

            //if the moving was successful then return 1 to the client.
            return "1";
   }
...