使用webservice在服务器端移动文件

时间:2011-07-13 03:56:28

标签: c# asp.net asmx

我正在处理具有以下逻辑的要求。代码在C#和.NET CF 3.5

  1. 将某些文件从移动设备上传到网络服务器。

  2. 上传成功后,文件将移至移动设备上的已归档文件夹。

  3. 将某些文件从服务器下载到移动设备。

  4. 下载成功后,必须将文件按顺序移动到服务器端的存档文件夹中,以免再次下载同一文件。

  5. 写了一个Web服务(asmx)来处理这个操作。上传和下载工作正常。

    Web服务使用函数FileInfo.MoveTo()将文件从下载的文件夹移动到Web服务器上的存档。

    这在本地工作正常(当webservice和调用webservice的客户端托管在同一台机器上时)但是当部署到服务器时,我收到此消息“该进程无法访问该文件,因为它正被另一个进程使用”

    我已经为服务器端的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);
            }
    

    MoveMileToArchive(DumpfileName)的WebMethod代码

       [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";
       }
    

0 个答案:

没有答案