AngularJS/ASP.Net WebAPIアプリケーションでは、ボタンをクリックするときにPDFファイルを生成する必要があります。ボタン新しいブラウザのページでは、次のURLにユーザーを再指示しますASP.Net Web API - HTMLの表示とファイルのダウンロード
xyz.com/api/getpdf?Token=f3Ttkwf5XyvvZwcOZpEz
getpdf
は、エラーが発生した場合、PDFファイルやHTMLのエラーコードを返すAPIです。
問題は、PDFの生成に最大30秒かかることがあることです。ファイルを送信する前に、ページにいくつかのHTMLを表示するにはどうすればいいですか? HTMLも同じAPI呼び出しで返される必要があります。 1つのリクエストで複数の応答を持つことが可能であることを私は読んだ。。しかし、私はこれをどのようにして行うのですか?
これは、PDFを返すために、コントローラで単純化されたコードです:
[HttpGet]
public HttpResponseMessage GetPDF(string Token)
{
HttpResponseMessage resp = null;
try
{
// Generate PDF
Byte[] lPDF = GetPDF(Token);
// Return PDF in response
resp = Request.CreateResponse(HttpStatusCode.OK);
resp.Content = new ByteArrayContent(lPDF);
resp.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("inline");
resp.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
resp.Content.Headers.ContentDisposition.FileName = "PDF-File.pdf";
resp.Content.Headers.ContentLength = lPDF.Length;
return resp;
}
catch (Exception ex)
{
Toolkit.LogError("GetPDF", ex);
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
}
これはいいですが、特定の間隔で時刻を修正することはできません。5秒かかりますか、30秒かかることがあります。ユーザーがアプリケーションで作業を続けるためには、新しいページに「ファイル待ち」メッセージが必要です。 – navigator
これは単なる例です。ページがリダイレクトされている場合は、hideメソッドを呼び出す必要はありません。ドキュメントを生成するためにajaxメソッドを使用している場合は、それを呼び出すだけです。ここでは、(settimeoutの)応答時間を30秒に変更することができます... – Alexis