C# 如何知道控制器中的方法何时完成

C# 如何知道控制器中的方法何时完成,c#,asp.net,asp.net-mvc-4,controller,C#,Asp.net,Asp.net Mvc 4,Controller,我对这个方法有一个问题,我想返回一个PDF文件,当这个方法结束时,我想从目录中删除de文件 public ActionResult DescargaPdfCompara(string id) { var rutaPdf = string.Empty; var type = "application/pdf"; try { DateTime ahora = DateTime.Now;

我对这个方法有一个问题,我想返回一个PDF文件,当这个方法结束时,我想从目录中删除de文件

public ActionResult DescargaPdfCompara(string id)
    {
        var rutaPdf = string.Empty;
        var type = "application/pdf";

        try
        {

            DateTime ahora = DateTime.Now;
            var numeroAleatorio = new Random();
            int numeroRandomico = numeroAleatorio.Next(100000000, 1000000000);
            string Ruta = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Reportes\" + Convert.ToString(ahora.Year + ahora.Month + ahora.Day + ahora.Hour + ahora.Minute + ahora.Second + numeroRandomico) + ".pdf");

            var result = SimuModel.ObtenerSabanaReporteComparativo(id);
            var resumen = SimuModel.ObtenerPreExcel(result);
            SimuModel.GenerarPdfCompa(result, resumen, Ruta);

            rutaPdf = Ruta;

            return File(rutaPdf, type);

        }
        catch (Exception e)
        {

            throw e;
        }
        finally
        {
            System.IO.File.Delete(rutaPdf);
        }
    }
在finally中,我删除了该文件,但由于该方法找不到该文件,因此出现了一个错误。出于某种原因,该方法在返回该文件之前删除了该文件

对不起我的英语,我来自智利


谢谢你的回答

更改返回类型ContentResult

删除最后一节

public ContentResult DescargaPdfCompara(string id)
{
    var rutaPdf = string.Empty;
    var type = "application/pdf";

    try
    {

        DateTime ahora = DateTime.Now;
        var numeroAleatorio = new Random();
        int numeroRandomico = numeroAleatorio.Next(100000000, 1000000000);
        string Ruta = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Reportes\" + Convert.ToString(ahora.Year + ahora.Month + ahora.Day + ahora.Hour + ahora.Minute + ahora.Second + numeroRandomico) + ".pdf");

        var result = SimuModel.ObtenerSabanaReporteComparativo(id);
        var resumen = SimuModel.ObtenerPreExcel(result);
        SimuModel.GenerarPdfCompa(result, resumen, Ruta);

        rutaPdf = Ruta;

        return Content(rutaPdf, type);

    }
    catch (Exception e)
    {

        throw e;
    }

}

您可以使用
System.IO.File.ReadAllBytes
将所有文件内容读取到内存中,然后删除该文件并使用另一个控制器重载返回内容。文件方法:

    public ActionResult GetFile()
    {
        var fileName = Path.GetTempFileName();
        System.IO.File.WriteAllText(fileName, "Hola, Chile!");
        var bytes = System.IO.File.ReadAllBytes(fileName);
        System.IO.File.Delete(fileName);
        return File(bytes, "text/plain", "file.txt");
    }

当我删除finally部分时,文件返回良好,问题是我必须删除它,谢谢你的回答@Maurinostroza podría hacer clic在“aceptar respuesta”中