如何从ASP.NET核心应用程序传回cookie

时间:2016-07-28 18:27:51

标签: c# asp.net cookies

我在ASP.NET Core应用程序中有以下方法,它生成一个文件并返回该文件。

  [HttpPost]
    public ActionResult Export(string data)
    {
        if (string.IsNullOrEmpty(data)) return View();

        const string contentType = "Application/msexcel";
        var fileName = "Export On " + DateTime.Now.ToString("MM-dd-yyyy hh:mm") + ".xlsx";
        var ms = ExportControllerService.Export(data, ref fileName, User.Identity.Name);

        var file = File(ms, contentType, fileName);
        var result = (ActionResult) file;
        return ms != null ? result : View();
    }

我想要做的还是用这个文件传回一个cookie。在以前的ASP.NET版本中,我做了类似下面的内容

            var result = workbook.SaveAsActionResult(string.Format("export-{0}.xlsx", DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss")), HttpContext.ApplicationInstance.Response,
                ExcelDownloadType.PromptDialog, ExcelHttpContentType.Excel2010);
            result.Response.SetCookie(new HttpCookie(ExportHelpers.DownloadCookieName, "true") { Path = "/" });

请注意,我正在使用生成的ActionResult并使用response属性来设置cookie。

为了向您提供我正在做的事情的完整背景我在一个页面上有一个隐藏的IFrame,当我调用此Export方法时,我回复隐藏的IFrame,它调用此方法然后一旦它完成它在客户端显示文件打开/下载,保持屏幕完好无损。我想拥有这个cookie的原因是,在导出时我在屏幕上显示状态栏,我需要知道文件何时完成生成并准备在客户端打开,这样我就可以了隐藏状态栏。

2 个答案:

答案 0 :(得分:0)

我想您会知道该文件已完成导出,并且已准备好通过POST已完成执行来下载。我不认为有必要将此类信息放入cookie中。 Cookie应该用于存储您在页面加载或网站访问之间需要保留的用户信息。

ETA:你可能想要提出你的前端代码,因为这似乎是问题所在。

答案 1 :(得分:0)

我使用以下内容:HttpContext.Response.Cookies.Append(" CranalyticsExportStatus"," ExportComplete");