Javascript 通过后台任务c下载文件#

Javascript 通过后台任务c下载文件#,javascript,c#,asp.net,knockout.js,signalr,Javascript,C#,Asp.net,Knockout.js,Signalr,我最近将我的一个控制器转换为后台任务,该任务在线程完成后返回HTTPResponseMessage。我面临的问题是在任务完成后让下载弹出。我还实现了SignalR来跟踪进度。这是我的控制器代码: public async Task<IHttpActionResult> GetReportaync([FromUri] ReportRequestViewModel request) { var token = UnitOfWork.Start();

我最近将我的一个控制器转换为后台任务,该任务在线程完成后返回HTTPResponseMessage。我面临的问题是在任务完成后让下载弹出。我还实现了SignalR来跟踪进度。这是我的控制器代码:

        public async Task<IHttpActionResult> GetReportaync([FromUri] ReportRequestViewModel request)
        {
var token = UnitOfWork.Start();    
HostingEnvironment.QueueBackgroundWorkItem(CancellationToken =>
            {
                using (token)
                {
                    try
                    {
                        HubFunctions.UpdateReportProgress(username, status);
                        var parameters = request.ToReportParams();
                        var report = ReportFactory.CreateReport(request.ReportExportType, IsVA());
                        var docStream = report.BuildReport(parameters);
                       
                        if (request.SaveReport)
                        {
                            SaveDocumentToAmazon(request, report.FileName, docStream);
                        }
                        var GeneratedReport = GetFileAsResponseMessage(docStream.ToArray(), report.FileName, true);
                        ReportCacheDto generateReportDto1 = new ReportCacheDto()
                        {
                            Report = GeneratedReport,
                            Status = CacheConstants.Progress.Completed.ToString()
                        };
                        bool completed = SaveCacheReportProgress(key, generateReportDto1);
                        Request.CreateResponse(GeneratedReport);
                        HubFunctions.UpdateReportResult(new GenerateReportDto() { Message = "Import Completed", Success = true, Report = GeneratedReport }, username);
                    }
                    catch(Exception e)
                    {
                        LogHandler.LogError("An error occured", e);
                        Request.CreateResponse(HttpStatusCode.InternalServerError, e);
                        HubFunctions.UpdateReportResult(new GenerateReportDto() { Message = "Import Failed", Success = false, Report = Report }, username);

                    }
                }
            });
            return Ok(new GenerateReportDto
            {
                Message = "Generate Started",
                Success = true
            }); 
        }
基本上,信号器一旦完成返回:

    public bool Success { get; set; }
public string Message { get; set; }
public HttpResponseMessage Report { get; set; } 
现在我的问题是如何让报表参数作为下载弹出

    ScorecardReportVM.prototype.ConnectToSignalRHub_ReportResult = function () {
        var self = this;
        var hub = $.connection.ReportResult;

        hub.client.UpdateStatus = function (response) {
            self.SetImportRunning(false);
            var link = document.createElement('a');
            link.href = response.Report;
            document.body.appendChild(link);
            link.click();
            console.log(response);
        };
        

    };
    public bool Success { get; set; }
public string Message { get; set; }
public HttpResponseMessage Report { get; set; }