如何从ASP.NET核心应用程序返回Cookie



我在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并扰乱响应属性来设置cookie。

为了给你完整的背景,我正在做的是在一个页面上,我有一个隐藏的IFrame,当这个Export方法被调用时,我所做的是发布隐藏的IFframe,它调用这个方法,然后一旦完成,它就会在客户端上显示打开/下载的文件,保持屏幕不变。我想要这个cookie的原因是,当它导出时,我会在屏幕上显示一个状态栏,我需要知道文件何时完成生成并准备在客户端上打开,这样我就可以隐藏该状态栏。

我想您会知道文件已经完成导出,并且可以通过POST已经完成执行来下载。我认为没有必要把这种信息放在cookie中。Cookie应用于存储用户的信息,您需要在页面加载或网站访问之间保存这些信息。

ETA:你可能想把你的前端代码放上去,因为这似乎是问题所在。

我用以下方法完成了它:HttpContext.Respons.Cookies.Append("CranalyticsExport Status‌​","ExportComplete");

最新更新