ASP.Net MS Chart: изображение отсутствует - PullRequest
0 голосов
/ 03 января 2012

Я пытаюсь сделать так, чтобы появился мой первый MS Chart - просто строка. Однако, когда я нажимаю кнопку отладки (VS2010), все, что я получаю, - это значок отсутствующего изображения на веб-странице (независимо от браузера). Диаграмма была скопирована с образцов MS Chart.

Моей первой мыслью было, что MS Chart не был установлен правильно, но все примеры отлично работают при отладке среды примеров. Это просто моя собственная тестовая страница, которая не отображает изображение.

Где я иду не так ???

Вот файл web.config:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <appSettings>
    <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
  </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>
  <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>
    <roleManager enabled="true"/>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    <pages theme="xxx">
      <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>

</configuration>

Вот код страницы:

<asp:chart id="chart1" runat="server" imagetype="Png" BackColor="WhiteSmoke" BorderWidth="2" BackGradientStyle="TopBottom" BackSecondaryColor="White" Palette="BrightPastel" BorderDashStyle="Solid" BorderColor="26, 59, 105" Height="296px" Width="412px">
     <titles>
          <asp:title ShadowColor="32, 0, 0, 0" Font="Trebuchet MS, 12pt, style=Bold"  ShadowOffset="3" Text="Two series with 20000 points each." ForeColor="26, 59, 105">
          </asp:title>
    </titles>
    <legends>
         <asp:legend Enabled="False" IsTextAutoFit="False" Name="Default"  BackColor="Transparent" Font="Trebuchet MS, 8.25pt, style=Bold"></asp:legend>
    </legends>
    <borderskin skinstyle="Emboss"></borderskin>
    <series>
         <asp:series Name="Series1" ChartType="FastLine" ShadowColor="Black" BorderColor="180, 26, 59, 105"></asp:series>
         <asp:series Name="Series2" ChartType="FastLine" ShadowColor="Black" BorderColor="180, 26, 59, 105" Color="224, 64, 10"></asp:series>
    </series>
    <chartareas>
         <asp:chartarea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid" BackSecondaryColor="White" BackColor="Gainsboro" ShadowColor="Transparent" BackGradientStyle="TopBottom">
             <area3dstyle Rotation="10" perspective="10" Inclination="15" IsRightAngleAxes="False" wallwidth="0" IsClustered="False"></area3dstyle>
             <axisy linecolor="64, 64, 64, 64" IsLabelAutoFit="False">
                  <labelstyle font="Trebuchet MS, 8.25pt, style=Bold" />
                  <majorgrid linecolor="64, 64, 64, 64" />
             </axisy>
             <axisx linecolor="64, 64, 64, 64" IsLabelAutoFit="False">
                  <labelstyle font="Trebuchet MS, 8.25pt, style=Bold" />
                  <majorgrid linecolor="64, 64, 64, 64" />
             </axisx>
        </asp:chartarea>
    </chartareas>
</asp:chart>

Код сзади:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.DataVisualization.Charting;
using System.Drawing;

public partial class reporting : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        double yValue = 50.0;
        Random random = new Random();
        for (int pointIndex = 0; pointIndex < 20000; pointIndex++)
        {
            yValue = yValue + (random.NextDouble() * 10.0 - 5.0);
            chart1.Series["Series1"].Points.AddY(yValue);
        }

        chart1.Series["Series1"].ChartType = SeriesChartType.FastLine;
    }
}

С Новым годом!

Ответы [ 2 ]

1 голос
/ 03 января 2012

Вы должны предоставить папку, а также дать разрешения Пользователю IIS для доступа к этой папке.Пользователь, которому требуется доступ, зависит от версии Windows и IIS, поэтому вам придется проверить его.

1 голос
/ 03 января 2012

В прошлый раз, когда я работал с MS Chart, мне пришлось указать физический путь для изображений в веб-конфигурации. В противном случае я бы получил только сломанное изображение. Ни одна из других опций не работала согласованно, но создание папки c: \ tempimages и установка этого значения сделали

Также убедитесь, что у пользователя IIS для этого компьютера есть разрешения на запись в папку. Предоставляйте разрешения через IIS, а не через проводник Windows.

...