【问题标题】:No display of generated ASP chart on aspx page in my web application在我的 Web 应用程序的 aspx 页面上没有显示生成的 ASP 图表
【发布时间】:2026-01-11 22:35:01
【问题描述】:

为我的 Web 应用程序创建了一个应该显示 ASP.NET 图表的 aspx 页面。能够生成图表但不显示在页面上。我可以在我的“临时图表”文件夹中看到生成的图表。

我正在使用 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>

但我无法在页面上看到图表。我有什么遗漏吗?

已解决:&lt;asp:Chart&gt;添加了ImageStorageMode属性并设置了值“UseImageLocation”。

【问题讨论】:

  • 等等,你为什么要在 aspx 页面中插入 c# sn-ps?使用代码隐藏,它更清晰!你用的是什么IDE?我也可以完美地看到它。
  • 我正在我的网络应用程序中实现它。我对使用 .cs 文件有一些限制。我没有为此使用 Visual Studio。

标签: asp.net web-applications charts asp.net-charts


【解决方案1】:


尝试从

更改您的 appSetting
<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 可用。

默认值为真。

【讨论】:

    【解决方案2】:

    这是图表设置的完整 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文件。

    希望这会有所帮助。

    【讨论】:

    • 将缺失的行添加到 web.config。但结果是一样的。
    • 这很奇怪,您是否看到任何错误消息?你说你不使用visual studio,你用的是什么?
    • 在我的 Web 应用程序中,我可以实现/添加 aspx 页面。它是一个 .NET 应用程序。将 ImageStorageMode="UseImageLocation" 属性添加到 并且它起作用了。
    • 很高兴它对您有用,请用您的解决方案更新您的问题,以便其他人将来可以从中受益:)
    最近更新 更多