Mvc azure存储,一定时间后自动删除存储

时间:2014-05-04 17:56:35

标签: asp.net-mvc azure

我正在开发一个用户可以上传blob和元数据的azure网站。我想要上传的东西也会在一段时间后被删除。

我能想到的唯一方法是使用cloudapp而不是具有辅助角色的网站,如果上传的文件已过期,则会每小时检查一次并继续并删除它。但是我想在没有工人的情况下去一个简单的网站。

我有一个功能,检查是否应删除上传的项目,如果用户在页面上执行某些操作,我可以轻松调用此功能,但是..如果用户没有做任何事情,时间用完就不会删除它因为用户从不调用该函数..永远不会删除存储。你会如何解决这个问题?

由于

3 个答案:

答案 0 :(得分:0)

太过宽泛,无法给出正确答案,因为您可以通过多种方式解决这个问题。但是......从客观的角度来看,因为你正在使用网站,我建议你看一下Web Jobs,看看这对你来说是否是正确的工具(因为这使你能够在没有大量额外工作的情况下运行定期工作) Web / worker配置中的VM)。您仍然需要一种方法来管理元数据以了解要删除的内容。

关于其他特定于Azure的内置机制,您还可以考虑将删除消息排队,其隐身时间等于内容可用的时间。在该时间到期之后,队列消息变得可见,然后任何队列消费者都将看到该消息并能够对其进行操作。这可以是您的Web作业(具有队列的SDK支持)或您构建的任何其他机制。

同样,一个非常广泛的问题,没有单一的正确答案,所以我只是指出可以帮助解决这一特定问题的Azure特定机制。

答案 1 :(得分:0)

像大卫在他的回答中所说,你的问题可以有很多解决方案。一种解决方案可能是依靠blob本身。在此方法中,您可以定期获取blob容器中的blob列表,并确定是否应删除blob。定期提取可以通过Azure WebJob(如果应用程序部署为网站)或通过Azure辅助角色完成。工作者角色方法与主应用程序的部署方式无关。它可以部署为云服务或网站。

有了这个,你可以采取两种方法:

  1. 依赖于Blob的上次修改日期:每当更新blob时,其Last Modified属性都会更新。您可以使用它来确定是否应删除blob。如果永远不会修改上传的blob,这种方法最有效。
  2. 依靠Blob的自定义元数据:每当上传blob时,您都可以在blob的元数据中设置上传日期/时间。当您获取blob列表时,可以将上载日期/时间元数据值与当前日期/时间进行比较,并确定是否应删除blob。

答案 2 :(得分:0)

另一种方法可能是使用容器名称作为"到期日期" 这可能会使删除更容易,因为您可以删除过期的容器