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后,重新打开链接后将不显示任何内容。我有一种感觉,这与我保存图像的方式有关,但我不确定。是否需要任何软件包更新来解决此问题?任何帮助将不胜感激。
遇到此问题的原因是 Web 应用程序无法保存到服务器的本地文件系统。 因此,当您执行Chart1.SaveImage(imgPath);
时,它实际上并没有保存。 如果要坚持使用此模式,则应用程序池用户将需要对此文件夹的写入权限。