C# - MS 图表图像在保存后变为空白

本文关键字:保存 空白 图像 MS | 更新日期: 2023-09-27 18:35:25

我有一个页面,根据所选选项显示生成的MS图表。

以前,在本地

执行此操作时,我可以保存图表图像并通过ExcelDl_Click将其显示在 excel 工作表中。但是在将系统部署到IIS后,我得到的保存的"图表"图像是一个空白的方形图像。

以下是在本地和部署中使用的代码:

    protected void ExcelDl_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=ViewHistoryChart.xls");
        Response.ContentType = "application/vnd.ms-excel";
        Response.Charset = "";
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        Chart1.RenderControl(hw);
        string tmpChartName = "ChartImage.jpg";
        string imgPath = HttpContext.Current.Request.PhysicalApplicationPath + tmpChartName;
        Chart1.SaveImage(imgPath);
        string src = tmpChartName;
        string img = string.Format("<img src = '{0}{1}' />", HttpContext.Current.Request.PhysicalApplicationPath, src);
        Table table = new Table();
        TableRow row = new TableRow();
        Unit width = new Unit(500, UnitType.Pixel);
        row.Cells.Add(new TableCell());
        row.Cells[0].Width = width;
        row.Cells[0].Controls.Add(new Label { Text = ChartTitle.Text,  ForeColor=Color.Red, });
        table.Rows.Add(row);
        row = new TableRow();
        row.Cells.Add(new TableCell());
        row.Cells[0].Controls.Add(new Literal { Text = lblSectionFunctionSelected.Text });
        table.Rows.Add(row);
        row = new TableRow();
        row.Cells.Add(new TableCell());
        row.Cells[0].Controls.Add(new Literal { Text = img });
        table.Rows.Add(row);
        row.Cells.Add(new TableCell());
        row.Cells[0].Controls.Add(new Literal { Text = lbllegendHistory.Text });
        table.Rows.Add(row);
        sw = new StringWriter();
        hw = new HtmlTextWriter(sw);
        table.RenderControl(hw);
        Response.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }

当我单击页面上的ChartImg.axd图像链接时,图表显示正确。但是在我单击ExcelDl_Click后,重新打开链接后将不显示任何内容。我有一种感觉,这与我保存图像的方式有关,但我不确定。是否需要任何软件包更新来解决此问题?任何帮助将不胜感激。

C# - MS 图表图像在保存后变为空白

遇到此问题的原因是 Web 应用程序无法保存到服务器的本地文件系统。 因此,当您执行Chart1.SaveImage(imgPath);时,它实际上并没有保存。 如果要坚持使用此模式,则应用程序池用户将需要对此文件夹的写入权限。