发送电子邮件ASP.NET MVC 5后删除Rotativa pdf

时间:2018-08-21 16:28:50

标签: c# asp.net-mvc rotativa

我能够使用Rotativa并使用以下代码生成pdf。因此,我将pdf和电子邮件另存为附件。现在我的问题是如何删除此文件。文件生成和发送电子邮件可能需要一段时间,因此在进行删除调用时会生成错误:该进程无法访问文件.... blah / blah.pdf,因为该文件正在被另一个进程使用。

我需要帮助才能清理生成的文件。这些文件跨越了长达一年的记录,并占用了大量的空间和时间。

当文件已完全通过电子邮件发送并释放后,如何进行删除呼叫?

LAYER_TYPE_HARDWARE

2 个答案:

答案 0 :(得分:0)

您可以...,在文件的内存中复制一份,然后告诉邮件发送者使用该版本(在mem中)...。这意味着您可以删除本地物理文件。不再使用in mem版本会自动清理。

答案 1 :(得分:0)

通常,名称为Async的方法将在完成时调用回调方法或返回Task。

通常会将回调传递给方法,如下所示:

[{u'description': u'A batman story', u'title': u'The dark knight'}, {u'description': u'A mummy story', u'title': u'The Mummy: Tomb of the Dragon Emperor'}, {u'description': u'An Avengers story', u'title': u'Ironman'}])

但是有时候有时候需要一个单独的事件,当完成时,您需要使用回调连接对象。在这种情况下,它可以称为SendComplete或类似名称。

如果mailer.BulkReceipt(path, pdfname, Id, year).SendAsync(() => System.IO.File.Delete(path)); 调用返回一个Task,那么您可能要调用await并使您的Receipt方法异步:

SendAsync

或类似的东西...