Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件加载到服务器操作该文件,然后在一段时间后将其删除.NETC#_C#_Asp.net_C# 4.0 - Fatal编程技术网

将文件加载到服务器操作该文件,然后在一段时间后将其删除.NETC#

将文件加载到服务器操作该文件,然后在一段时间后将其删除.NETC#,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,大家好,我的任务是创建一个web应用程序,允许最终用户将文件加载到我们的一个服务器上。然后服务器将处理该文件,然后将其返回给最终用户 这是我的问题。 我已经弄清楚了所有的事情,只是一旦我操作了这个文件,我很难从服务器上删除它。有没有一种方法,我可以把一个计时器说,30分钟后,有从服务器上删除的文件在我的代码?还是有其他解决办法? 我知道计时器的建议可能没有意义,但是我想不出另一种方法来做,所以我正在寻找一种意见或另一种方法。计时器是一种很好的方法来安排未来的事情。如果用户再次请求文件,甚至可以重

大家好,我的任务是创建一个web应用程序,允许最终用户将文件加载到我们的一个服务器上。然后服务器将处理该文件,然后将其返回给最终用户 这是我的问题。 我已经弄清楚了所有的事情,只是一旦我操作了这个文件,我很难从服务器上删除它。有没有一种方法,我可以把一个计时器说,30分钟后,有从服务器上删除的文件在我的代码?还是有其他解决办法?
我知道计时器的建议可能没有意义,但是我想不出另一种方法来做,所以我正在寻找一种意见或另一种方法。

计时器是一种很好的方法来安排未来的事情。如果用户再次请求文件,甚至可以重置计时器。只需给计时器一个委托,在计时器启动时删除文件

计时器是一种很好的方法来安排未来的事情。如果用户再次请求文件,甚至可以重置计时器。只需给计时器一个委托,在计时器启动时删除文件

为什么不在操作后删除它?或者不管这个过程的最后一步是什么?这似乎是最好、最简单的方法

根据容量的不同,为每个文件执行单个任务可能不是一个好主意,而是应该将它们批处理到队列中,并让单个线程处理队列

例如,您可以在global.asax(也许)中通过比较文件时间或其他方式来处理清理任务

或者,作为流程的第一步,您可以清理任何旧文件。不完全一样,但可能已经足够接近了


或者,您可以将缓存作为计时器使用。

为什么不在操作后将其删除?或者不管这个过程的最后一步是什么?这似乎是最好、最简单的方法

根据容量的不同,为每个文件执行单个任务可能不是一个好主意,而是应该将它们批处理到队列中,并让单个线程处理队列

例如,您可以在global.asax(也许)中通过比较文件时间或其他方式来处理清理任务

或者,作为流程的第一步,您可以清理任何旧文件。不完全一样,但可能已经足够接近了


或者,您可以将缓存设置为计时器。

您可以在服务器上设置计划任务吗

对于一个简单的控制台应用程序来说,这种方法非常适合,它可以简单地删除修改日期/时间早于(比如)now.AddMinutes(-10)的文件

如果您愿意,该任务可以每10分钟左右运行一次

有时候最好不要让这种事情发生在你的网站上。让您的站点为您的用户服务,并创建其他内容为您的服务器服务:)

更新 如果它是一个流量大的网站,你可以在下次有人上传文件时删除所有旧文件。 因此:

用户选择要上载的文件,单击上载->您获得文件->您 删除旧文件(无论它们属于谁)->您可以 文件->文件将被下一个用户删除上传


您能否在服务器上设置计划任务

对于一个简单的控制台应用程序来说,这种方法非常适合,它可以简单地删除修改日期/时间早于(比如)now.AddMinutes(-10)的文件

如果您愿意,该任务可以每10分钟左右运行一次

有时候最好不要让这种事情发生在你的网站上。让您的站点为您的用户服务,并创建其他内容为您的服务器服务:)

更新 如果它是一个流量大的网站,你可以在下次有人上传文件时删除所有旧文件。 因此:

用户选择要上载的文件,单击上载->您获得文件->您 删除旧文件(无论它们属于谁)->您可以 文件->文件将被下一个用户删除上传


如果您可以确保应用程序始终保持运行,则可以跳过计划任务并使用。在这种情况下,即使它关闭了,使用quartz也没那么糟糕——除非有其他原因,在应用程序空闲时挂一些旧文件不会有什么坏处


在处理这个问题时,我会以一种适当的方式(例如——您的数据库)存储一个文件列表,其中包含一个标记,表示作业已完成和已删除。然后,您的quartz任务可以抓取标记为完成但未标记为删除的文件并清理这些文件。在文件删除、更新和日志记录过程中使用事务的额外积分,这样您就可以知道世界处于睡眠状态时发生了什么。

如果您可以确保应用程序始终保持运行,您就可以跳过计划的任务并使用它。在这种情况下,即使它关闭了,使用quartz也没那么糟糕——除非有其他原因,在应用程序空闲时挂一些旧文件不会有什么坏处


在处理这个问题时,我会以一种适当的方式(例如——您的数据库)存储一个文件列表,其中包含一个标记,表示作业已完成和已删除。然后,您的quartz任务可以抓取标记为完成但未标记为删除的文件并清理这些文件。在文件删除、更新和日志记录过程中使用事务的额外积分,这样您就可以知道在世界处于睡眠状态时发生了什么。

我可以在不冻结界面的情况下做到这一点吗?有没有办法创建计时脚本?如果计时器在服务器上运行,如何冻结用户的浏览器?@mbeckish我会给他们一个url,让他们可以下载文件。@mbeckish我没有服务器的管理员权限,我只能在服务器上为我的特定站点放置文件。我想知道的是,当用户单击一个按钮时,我是否可以运行一个计时器,并且它会无限期地继续运行以查找文件。@mbeckish您不能做任何事情。@mbeckish