Нет отображения сгенерированной диаграммы ASP на странице aspx в моем веб-приложении

Для моего веб-приложения создана страница aspx, на которой должны отображаться диаграммы ASP.NET. Может создавать диаграммы, но не отображаются на странице. Я могу видеть сгенерированные диаграммы в моей папке «Временные диаграммы».

Я использую ASP.Net 4 и .NET Framework 4 и сделал следующее.

Код:

<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.HtmlControls" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Import Namespace="System.Web.UI.WebControls.WebParts" %>
<%@ Import Namespace="System.Xml.Linq" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Linq" %>
<%@ Import Namespace="System.Web.UI.DataVisualization" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Web.UI.DataVisualization.Charting" %>
<%@ Page Language="C#" %>
<%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>
<script runat="server"> 
protected void Button1_Click(object sender, EventArgs e)
    {
    }

</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
     <asp:Chart ID="Chart1" runat="server" ImageLocation="~/TempCharts/ChartPic_#SEQ(200,2)" Height="200px" Width="535px" >
      <BorderSkin /> 
        <Series>
          <asp:Series Name="Series1" ChartType="Pie" YValuesPerPoint="2" >
                    <Points>
                        <asp:DataPoint AxisLabel="4 letter" YValues="20,0" />
                        <asp:DataPoint AxisLabel="5 letter" YValues="10,0" />
                        <asp:DataPoint AxisLabel="6 letter" YValues="5,0" />
                        <asp:DataPoint AxisLabel="7 letter" YValues="16,0" />
                    </Points>  
           </asp:Series>
         </Series>
         <ChartAreas>
           <asp:ChartArea Name="ChartArea1"  >
           </asp:ChartArea>
         </ChartAreas>
  </asp:Chart> 
    </div>
   </form>
</body>
</html>

И добавил в web.config следующее:

<appSettings>
     <add key="ChartImageHandler" value="storage=memory;timeout=30;" /> 
</appSettings>

<system.webServer>
    <handlers>
    <remove name="ChartImageHandler" />
    <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
        path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,
        System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
</system.webServer>

Но я не могу видеть диаграмму на странице. Я что-то упустил?

Решено: добавлен атрибут ImageStorageMode в <asp:Chart> и установлено значение UseImageLocation.


person EHVR    schedule 23.05.2014    source источник
comment
Подождите, а зачем вы вставляете фрагменты C # на страницу aspx? используйте программный код, он понятнее! Какую IDE вы используете? И я это прекрасно вижу.   -  person fra9001    schedule 23.05.2014
comment
Я реализую это в своем веб-приложении. У меня есть ограничения на использование файлов .cs. Я не использую для этого Visual Studio.   -  person EHVR    schedule 26.05.2014


Ответы (2)



попробуйте изменить настройки приложения с

<appSettings>
 <add key="ChartImageHandler" value="storage=memory;timeout=30;" /> 
</appSettings>

к этому

<appSettings>
 <add key="ChartImageHandler" value="storage=memory;timeout=30;privateImages=false" /> 
</appSettings>

Если установлено значение true, сгенерированное изображение может быть загружено его владельцем только в том случае, если используются некоторые из следующих типов идентификации:

Пользователь аутентифицирован.
AnonymousID включен.
SessionID доступен.

Значение по умолчанию верно.

person Claudio    schedule 03.01.2017

Вот полный Web.Config для настроек диаграммы:

    <configuration>
        <appSettings>
            <add key="ChartImageHandler" value="storage=file;timeout=30;dir=~/TempCharts/;"/>
        </appSettings>
        <system.webServer>
            <validation validateIntegratedModeConfiguration="false"/>
            <handlers>
                <remove name="ChartImageHandler"/>
                <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            </handlers>
        </system.webServer>
        <system.web>
            <httpHandlers>
                <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
            </httpHandlers>
            <pages>
                <controls>
                    <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                </controls>
            </pages>
            <compilation debug="true" targetFramework="4.0">
                <assemblies>
                    <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies</compilation>
        </system.web>
    </configuration>

Сравните его с текущим файлом Web.Config и посмотрите, чего не хватает, и попробуйте создать новый пустой проект, добавьте ссылку на System.Web.DataVisualization.dll, и он должен автоматически добавить настройку диаграммы в файл Web.Config.

Надеюсь это поможет.

person kal kokah    schedule 24.05.2014
comment
Добавлены недостающие строки в web.config. Но результат такой же. - person EHVR; 26.05.2014
comment
это странно, вы видите какое-нибудь сообщение об ошибке? Вы сказали, что не используете для этого визуальную студию, что вы используете? - person kal kokah; 26.05.2014
comment
Внутри своего веб-приложения я могу реализовать / добавить страницы aspx. Это приложение .NET. Добавлен атрибут ImageStorageMode = UseImageLocation в ‹asp: Chart›, и это сработало. - person EHVR; 26.05.2014
comment
Рад, что это сработало для вас, пожалуйста, обновите свой вопрос своим решением, чтобы другие могли извлечь из него выгоду в будущем :) - person kal kokah; 26.05.2014