2016-07-28 2 views
0

ファイルを生成してファイルを返すASP.NET Coreアプリケーションで、次のメソッドを使用しています。ASP.NET Core Appからクッキーを戻す方法

[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(); 
    } 

私がやりたいことは、このファイルでクッキーを返すことです。 ASP.NETの以前のバージョンでは、私は私が生成されますのActionResultを取り、クッキーを設定するための応答性をいじってる次

  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 = "/" }); 

お知らせのような何かをしました。

私が行っていることを完全にバックグラウンドで伝えるには、このエクスポートメソッドが呼び出されたときに、このメソッドを呼び出した隠れたIFrameをポストバックし、クライアントにファイルのオープン/ダウンロードを表示し、画面はそのままにします。私がこのクッキーを持っている理由は、エクスポート中に画面上にステータスバーを表示していて、ファイルの生成が完了してクライアント上で開く準備ができていることを知る必要があるからです。ステータスバー。

答えて

0

ファイルのエクスポートが完了し、POSTの実行が完了したことでダウンロードできる状態になっていることがわかります。この種の情報をクッキーに入れる必要はありません。 Cookieは、ページの読み込みまたはサイト訪問の間に保持する必要のあるユーザーに関する情報を格納するために使用する必要があります。

ETA:問題が発生していると思われるフロントエンドコードを置くことができます。

+0

ファイルのダウンロードですので、フロントエンドには何もありません。テキストボックスとそれを送信するボタンがある単なるIFrameです。ファイルのコンテンツタイプが戻ってくると、UIにトリガするものは何もありません。 –

+0

これは、あなたが探している機能であると思われるため、これにajax投稿を使用できない理由はありますか? – Rosemary

+0

私はそれを次のように使いました:HttpContext.Response.Cookies.Append( "CranalyticsExportStatus"、 "ExportComplete"); –

0

私は以下のコードを使用しています。HttpContext.Response.Cookies.Append( "CranalyticsExportStatus"、 "ExportComplete");

関連する問題