我正在处理具有以下逻辑的要求。代码在C#和.NET CF 3.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";
}