当托管为Azure Web应用程序时,为什么我的ASP.NET应用程序导出CSV?

时间:2016-03-14 18:46:11

标签: azure web-applications asp.net-mvc-5

当我从Visual Studio测试时,我的应用程序导出CSV很好,但是当我将它作为Web应用程序部署到Azure时,我得到一个错误代码:错误代码:ERR_INVALID_RESPONSE。

以下是我使用的方法:

public void ExportEmpReport(int? er_id)
    {
        var er_hdr = db.expense_report_hdr.Include(w => w.employeeExpUser).Where(x => x.ID == er_id).FirstOrDefault();
        StringWriter sw = new StringWriter();
        sw.WriteLine("Employee Name: " + er_hdr.employeeExpUser.fullname + ", Period: " + er_hdr.period + ", Expense Report ID: " + er_id);
        sw.WriteLine("Date of Expense , Expense Class , Detail , Cust/Conv , Notes , Amount , GL Code , Project Code");

        Response.ClearContent();
        Response.AddHeader("content-disposition", "attachment;filename=ExpenseReport_" + er_id + ".csv");
        Response.ContentType = "text/csv";

        var lines = db.expense_report_line.Where(y => y.er_id == er_id);

        foreach (var line in lines) 
        {
            string exp_class = line.expenseType.expense.ToString().Replace(",", "");
            string detail = (line.expense_detail != null) ? line.expense_detail.Replace(",", "") : "";
            string cust_conv = (line.cust_conv != null) ? line.cust_conv.Replace(",", "") : "";
            string notes = (line.notes != null) ? line.notes.Replace(",", "") : "";
            sw.WriteLine(string.Format("{0},{1},{2},{3},{4},{5},{6},{7}", line.expense_date, exp_class, detail, cust_conv, notes, line.amount, line.gl_code.GL_code, line.project_code));
        }

        Response.Write(sw.ToString());
        Response.End();                       
    }

1 个答案:

答案 0 :(得分:1)

以下是您可能会尝试对其进行问题排查的一些建议:

:一种。在本地调试Web应用程序,同时连接到Azure上的数据库。表格是否正确读取?

如果代码无法从数据库中读取数据,请确保将数据库更新为最新的模式。

<强> B中。如果它正确读取数据,请逐步调试,并准确查看失败的位置。

如果在特定行失败,请删除/替换某些代码行,直到本地Web应用程序针对Azure上的数据库正确运行。您可能能够识别有问题的代码行,然后在此处进行报告以允许其他人帮助您进一步排除故障。

<强>℃。一旦您使用本地应用程序对抗Azure上的数据库,请将更新的项目代码部署到Azure上的Web应用程序,以查看它是否仍能正常运行。

如果它仍然不起作用,可能是您的Web App上有一个设置阻止它成功运行代码。

<强> d。在Azure中的Web App上检查.NET Framework的版本。选项应为v3.5或v4.6(对于非Core 1.0应用程序)。

如果选择了错误的版本,请确保选择正确的版本。

<强>电子。启用在Azure上运行的Web应用程序的远程调试。

您可以在“应用程序设置”边栏选项卡中打开/关闭远程调试功能,您还可以在其中选择VS版本(2012,2013,2015)。打开它以确定它失败的代码行。