无法使用通用处理程序下载文件

Unable to dowload file using generic handler

我正在使用通用处理程序下载 csv/excel 文件。直到昨天它工作正常。今天它突然停止在 IIS 7.5 上进行部署(尽管他的相同代码在 visual studio 调试模式下运行良好)。这是我的代码:

ASPX:这是一个内容页面

<input type="button" class="btn-primary" id="btnDownload" title="Download" value="Download" onclick='return downloadReport(this);' data-toggle="modal" data-target="#myModal" navurl='<%: ResolveUrl("~/Handlers/DownloadData.ashx") %>' />

JS:

function downloadReport(btn) {
//I am using a kendoUI combo box and kendo js + also using bootstrap for design & modal popups & also i have applied bundling to kendo & bootstrap files. They seem to be working fine without any conflicts as all their api's are working.
var $mod = $("#masterModal");
    $mod.modal('show');
    //window.location = "Handlers/DownloadData.ashx?rtp=" + combobox.val();
    window.location.href = $(btn).attr("navurl") + "?rtp=" + combobox.val();
    setTimeout(function () {
        $mod.modal("hide");
    }, 2000);

    return false;
}

主页:

我将包含上述方法的 js 文件包含在正文标记结束之前。

<script src='<%: ResolveUrl("~/Scripts/DataUploader.js") %>'></script>  
</body>
</html>

处理程序:在处理程序中处理请求方法

HttpResponse response = this._context.Response;
            HRReportData hrData = new HRReportData(ConfigMaster.DbProvider, ConfigMaster.ConnectionString, ConfigMaster.DBSchemaName);
            ReportDataManager rdm = null;
            ExcelPackage xlPackage = null;
            try
            {
                rdm = new ReportDataManager();
                DataSet ds = rdm.GetReportData(hrData, report_Type);
                if (ds != null && ds.Tables.Count > 0)
                {
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        xlPackage = new ExcelPackage();
                        ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets.Add(report_Type.ToString());
                        worksheet.Cells["A1"].LoadFromDataTable(ds.Tables[0], true, TableStyles.Light1);
                        response.ClearHeaders();
                        response.ClearContent();
                        response.Clear();
                        response.ContentType = "application/octet-stream";
                        response.AppendHeader("content-disposition", "attachment;  filename=" + report_Type.ToString() + ".xlsx");
                        xlPackage.SaveAs(response.OutputStream);
                        response.Flush();
                        //response.Close();
                        //response.End();
                    }
                }
            }
            catch (Exception ex)
            {
                //LogError.MethodLevelError(Convert.ToString(Session["Username"]), ex);
                if (!(ex is System.Threading.ThreadAbortException))
                {
                    //Other error handling code here
                }
            }
            finally
            {
                if (xlPackage != null)
                {
                    xlPackage.Dispose();
                    xlPackage.Dispose();
                }
            }

捆绑包配置:

bundles.Add(new ScriptBundle("~/Kendo/kendo").Include(
                "~/Scripts/jquery-1.11.3.min.js",
                "~/Kendo/js/kendo.all.min.js"
               // "~/Scripts/DataUploader.js"
            ));
            bundles.Add(new ScriptBundle("~/bootstrap/bootstrap").Include(
                "~/bootstrap/js/holder.js",
                "~/bootstrap/js/ie10-viewport-bug-workaround.js",
                "~/bootstrap/js/ie-emulation-modes-warning.js",
                "~/bootstrap/js/bootstrap.min.js"
            ));

以上所有代码在调试模式下运行良好,在部署模式下也运行良好。不知道发生了什么变化,它突然停止工作,我无法找出任何原因:(

部署时的行为:它没有停留在同一页面并下载文件,而是导航到处理程序并显示空白屏幕。没有文件下载。

调试模式下的行为或 运行 使用 vs2012 express 时的行为:它停留在同一页面并按预期下载文件。

有人请帮助我。

以上所有代码都可以 100% 正常工作。这其中绝对没有错误。我发现它不起作用的原因是已发布文件夹中的 web.config 不是某人 updated/overwritten 并且由于工作处于开始阶段我还没有添加对 Exception [=15= 的支持] 日志记录因此处理程序错误(由于访问配置文件中使用的密钥)未被注意到并且在 debug/dev 环境中配置文件是正确的因此从未发生错误。

无论如何,该代码对于希望使用通用处理程序下载文件的任何人都是有用的。但是请注意,上面的代码处于基础阶段,需要更新为: 1)用户请求验证-参数验证 2)用户会话验证 3)安全实施 4)异常处理 5) 记录