ASP.NET C#:从基于windows的服务器中删除文件(图像)的最佳方法
我正在开发一个网站,用户可以上传图像。我正在将图像保存到FTP文件夹(不是数据库)中,并将其详细信息保存在数据库中(文件名、路径等) 我注意到,当在localhost上工作时,下面的代码工作得很好,它不会给我任何错误。但当上传到服务器(使用windows托管计划)时,它不会删除该文件,并给出错误提示:ASP.NET C#:从基于windows的服务器中删除文件(图像)的最佳方法,c#,asp.net,C#,Asp.net,我正在开发一个网站,用户可以上传图像。我正在将图像保存到FTP文件夹(不是数据库)中,并将其详细信息保存在数据库中(文件名、路径等) 我注意到,当在localhost上工作时,下面的代码工作得很好,它不会给我任何错误。但当上传到服务器(使用windows托管计划)时,它不会删除该文件,并给出错误提示:无法删除该文件,因为它被另一个进程使用。 我已确保该目录具有适当的文件权限,但它仍然不会删除它。奇怪的是,当我使用FTP客户端手动删除它时,它会锁定文件,不允许我从中删除。我必须回收应用程序池才能这
无法删除该文件,因为它被另一个进程使用。
我已确保该目录具有适当的文件权限,但它仍然不会删除它。奇怪的是,当我使用FTP客户端手动删除它时,它会锁定文件,不允许我从中删除。我必须回收应用程序池才能这样做
我正在寻找从基于windows的服务器上删除文件的最佳方法,当您拥有文件的完整路径时
我在localhost上使用的代码是(当上传到服务器时,它会破坏其余代码):
谢谢。如果在重置应用程序池后可以删除该文件,则在上载该文件后,您似乎保留了对该文件的引用。您如何处理上载,以及上载后对文件执行哪些操作
更新:我发现其他一些人也有同样的问题,在调用
SaveAs(…)
后,上传的文件将被锁定
最后,在调用
SaveAs(…)
之前,文件似乎一直处于锁定状态,因此,如果您有一些服务器端验证来决定是否保存文件,那么问题可能就在那里?请注意,我没有对此进行测试。我使用的是AsyncFileUpload
控件,在OnUploadedComplete
事件中,我将此控件保存到会话中,按下按钮后,我将会话转换为AsyncFileUpload
,进行一些检查,然后使用“AsyncFileUpload1.PostedFile.SaveAs(Server.MapPath(path))'到FTP文件夹。就是这样。上传后我没有做任何其他事情。我应该在.SaveAs
之后做些什么吗?谢谢
if (File.Exists(path))
{
File.Delete(path);
}