У меня есть страница, на которой отображается сгенерированная диаграмма MS в соответствии с выбранными параметрами.C# - изображение MS Charts становится пустым после сохранения
Раньше, когда я делал это на своем локальном компьютере, я мог сохранить изображение диаграммы и отобразить его на листе Excel через ExcelDl_Click. Но после развертывания системы в 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, ссылка не будет отображаться после его повторного открытия. У меня такое чувство, что оно имеет какое-то отношение к тому, как я сохраняю изображение, но я не уверен. Есть ли какие-либо обновления пакета, необходимые для решения этой проблемы? Любая помощь будет оценена.
Хорошо, я попытался сделать это, и он по-прежнему сохраняется как одно и то же изображение белого квадрата. Я даже пытался предоставить полный доступ к AppPool. Ваш ответ кажется, что существует другая альтернатива? Что еще я могу сделать? – mhfour