Asp.net управление диаграммой не визуализируется последовательно
У меня есть ситуация в приложении webforms, использующем элемент управления Chart, где диаграмма часто отображается как сломанное изображение и только иногда отображается правильно. Это происходит только после того, как я публикую приложение на хост-сервере, оно всегда отлично отображается в моей локальной среде разработки.
Я опубликовал демо-версию здесь Вы увидите, что при каждом обновлении страницы диаграммы иногда будут отображаться, а иногда нет. Я что-то упускаю? Это проблема с моим хостинг-провайдером?
<appsettings> <!--<add key="ChartImageHandler" value="storage=memory;deleteAfterServicing=true;">--> <add key="ChartImageHandler" value="storage=session;timeout=60;privateImages=false;">
<form id="form1" runat="server"> <asp:Button ID="btnPostBack" runat="server" Text="Do Postback" OnClick="btnPostBack_Click" /> <table> <tbody><tr> <td>Bind On PageLoad <asp:Chart ID="Chart1" runat="server"> <series> <asp:Series Name="Series1" Color="LimeGreen"> <chartareas> <asp:ChartArea Name="ChartArea1"> </td> <td>Bind On Postback <asp:Chart ID="Chart2" runat="server"> <series> <asp:Series Name="Series1" Color="Brown"> <chartareas> <asp:ChartArea Name="ChartArea1"> </td> <td>Bind On PageLoad EnableViewState is TRUE <asp:Chart ID="Chart3" runat="server" EnableViewState="True"> <series> <asp:Series Name="Series1" Color="Goldenrod"> <chartareas> <asp:ChartArea Name="ChartArea1"> </td> <td>Bind On Postback EnableViewState is TRUE <asp:Chart ID="Chart4" runat="server" EnableViewState="True"> <series> <asp:Series Name="Series1"> <chartareas> <asp:ChartArea Name="ChartArea1"> </td> </tr> </tbody></table> </form>
protected void Page_Load(object sender, EventArgs e) { BindChart(Chart1); BindChart(Chart3); } protected void btnPostBack_Click(object sender, EventArgs e) { BindChart(Chart2); BindChart(Chart4); } private void BindChart(System.Web.UI.DataVisualization.Charting.Chart chrt) { List<chartitem> chartPoints = new List<chartitem>(); chartPoints.Add(new ChartItem("One", 1)); chartPoints.Add(new ChartItem("Two", 2)); chartPoints.Add(new ChartItem("Three", 3)); chrt.Series[0].XValueMember = "XValue"; chrt.Series[0].YValueMembers = "YValue"; chrt.DataSource = chartPoints; chrt.DataBind(); } public class ChartItem { public string XValue { get; set; } public double YValue { get; set; } public ChartItem(string x, double y) { this.XValue = x; this.YValue = y; } }
Что я уже пробовал:
Я пробовал как память, так и сеанс в качестве варианта хранения. Я не могу использовать файловое хранилище, так как получаю ошибки разрешений.
ZurdoDev
Щелчок правой кнопкой мыши по сломанному изображению и выбор открытия в новой вкладке приводит к ошибке, что ресурс не может быть найден. У вас есть код, который где-то очищает изображения?