ASP.NET Charting Control не работает на производственном сервере - PullRequest
8 голосов
/ 28 октября 2011

У меня есть приложение, которое в значительной степени опирается на графики, и в настоящее время графики будут работать на сервере разработки ASP.Net, но когда я пытаюсь опубликовать на своем сервере (Win 2008 Server R2, IIS 7), графики объявиться.

Используя Firebug, я вижу, что вызов ChartImg.axd возвращает 404, и все, что я получаю, это пустой держатель изображения в IE или ничего в Firefox. Я искал около 3 или 4 часов и попробовал почти все, что рекомендовано, но, похоже, ничего не работает.

Я бы хотел использовать memory / HttpImageHandler вместо конфигурации ImageLocation.

My Web.Config

    <appSettings>
    <!--<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />-->
    <add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=false" />
  </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>
    <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>
    <customErrors mode="Off"/>
  </system.web>

У кого-нибудь есть идеи, где я ошибаюсь, чтобы это не работало на моем сервере?

Ответы [ 6 ]

6 голосов
/ 31 октября 2011

Я нашел ответ на свою проблему, но я считаю, что моя проблема возникла именно из-за того, как работает мой код.

Как только я установил privateImages=false в appSettings для моего ChartImageHandler, мои изображения без проблем появились, используя ImageLocation с файловым хранилищем или HttpHandler с хранилищем памяти.

Я просмотрел список здесь и понял, что мой код не имеет НИКАКОГО из следующего:

  • Аутентификация
  • SessionID
  • AnonymousID

такнеявная настройка по умолчанию privateImages=true удерживала меня от загрузки моих изображений.Когда я установил privateImages=false, у меня не было проблем, и графики работали правильно.Я установил в своем приложении использование аутентификации Windows и установил privateImages=true, и теперь мои диаграммы генерируются либо с настройкой «Расположение изображения», либо с настройкой HttpHandler.

Надеюсь, это полезно.Я знаю, что долго копался и ничего не нашел.

3 голосов
/ 30 апреля 2012

Эта конфигурация работает для меня. Вам нужно использовать память как хранилище.

< add key="ChartImageHandler" value="storage=memory;deleteAfterServicing=true;timeout=20;"/>
1 голос
/ 28 октября 2011

Это похоже на проблему безопасности / разрешения.Сохраняете ли вы диаграммы в локальную папку, а затем назначаете разрешение на запись для пользователя IIS и / или пользователей сетевых служб для этой папки.

0 голосов
/ 28 февраля 2014

попробуйте это было решено в случае ошибки времени выполнения web.config

<pre>
<add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=true;Url=~\temp\"

/>

0 голосов
/ 15 февраля 2013
  <controls>
        <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
          assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </controls>

попробуйте это: измените версию = 4.0.0.0 на версию = 3.5.0.0

0 голосов
/ 28 октября 2011

Установите элементы управления Microsoft Chart на веб-сервере или попробуйте это:

Элемент управления ASP.Net Chart в среде общего хостинга

Также убедитесь, что HttpHandler зарегистрированsystem.webServer в вашем web.config при работе под IIS 7.

...