【发布时间】:2015-09-21 21:37:02
【问题描述】:
我们正在为我们的 ftp 服务器使用 IIS,我想编写一个 c# windows 服务或一个 HTTP 处理程序/模块,它会知道一个文件已被 ftp'd 到一个文件夹,这样我就可以移动它们它到另一个文件夹以及更新数据库。
我担心的是,如果我不知道文件是否已完成 FTP (ing) 到某个文件夹,那么如果我尝试对它执行某些操作,我会收到文件访问错误。
【问题讨论】:
标签: c# iis ftp httphandler
我们正在为我们的 ftp 服务器使用 IIS,我想编写一个 c# windows 服务或一个 HTTP 处理程序/模块,它会知道一个文件已被 ftp'd 到一个文件夹,这样我就可以移动它们它到另一个文件夹以及更新数据库。
我担心的是,如果我不知道文件是否已完成 FTP (ing) 到某个文件夹,那么如果我尝试对它执行某些操作,我会收到文件访问错误。
【问题讨论】:
标签: c# iis ftp httphandler
这个问题已经回答了 Does IIS FTP include an API to detect when a file upload completes?
基本上您可以使用自定义日志记录提供程序。
【讨论】:
您可以在文件夹上创建FileSystemWatcher,以监视文件创建事件。
但是,正如您所指出的,您必须担心文件正在传输中。为了解决这个问题,您可以使用 FileSystemWatcher 将文件名排队到监视/等待文件关闭的处理器。您可以通过以下方式检查文件是否已关闭:Is there a way to check if a file is in use?。
有一些较低级别的方法,但这会让您入门。 FileSystemWatcher 有问题 - 它很容易过载 - 所以如果这是一个“忙碌”的文件夹,您可以实现自己的轮询和比较,而不是依赖它。
【讨论】: