alexvw Ответов: 1

Asp.net + графики не рендерятся после развертывания


Всем привет;

Меня попросили составить несколько графиков для веб-сайта, и все это идет гладко как в среде разработки, так и в предпроизводственной среде; однако при развертывании в производство, все что мы получаем это огромное ничто.

Вот содержимое web.config (идентично, за исключением строк подключения):
<configuration>

  <connectionStrings>
    <add name="GraphData" providerName="System.Data.SqlClient" connectionString="Data Source=prodServer;Initial Catalog=StatsData;User ID=xxxx;Password=xxx;" />
  </connectionStrings>

  <appSettings>
    <!--<add key="ChartImageHandler" value="storage=file; timeout=20; dir=D:\TempChartStuff\; privateImages=false;" />-->
    <add key="ChartImageHandler" value="storage=memory; timeout=20; deleteAfterServicing=true; privateImages=false;" />
  </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>
    
    <compilation debug="true" targetFramework="4.5">
      <assemblies>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    
    <httpRuntime targetFramework="4.5"/>
    
    <pages controlRenderingCompatibilityVersion="3.5" maintainScrollPositionOnPostBack="true">
      <namespaces>
        <add namespace="System.Web.Optimization" />
      </namespaces>
      <controls>
        <add tagPrefix="webopt" namespace="Microsoft.AspNet.Web.Optimization.WebForms" assembly="Microsoft.AspNet.Web.Optimization.WebForms" />
        <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"

          assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </controls>
    </pages>
    
    <authentication mode="None" />
    
  </system.web>

</configuration>

Что я упускаю?

Что я уже пробовал:

Удалил и повторно развернул все связанные файлы.

Убедился, что все источники данных действительно доступны (указал как на разработку, так и на предпроизводственную среду на сервере производственных данных, и данные правильно извлекаются = графики визуализируются в указанных средах)

Убедитесь, что на рабочем сервере установлена платформа .NET Framework 4.0.

Изменил тип хранения ChartImageHandler (как видно из приведенного выше кода) с файла на Memeroy, но имеет тот же результат, все рендерится в dev и pre-prod, но не в PROD.

Обратите внимание, что при проверке сетевого трафика целевая страница загружает все ресурсы(код 200-OK на каждом), включая графические изображения. Я могу только догадываться по размеру, что они пусты.
Вот заголовки ответов для Dev/Pre-Prod и Prod соответственно:
Dev/Pre-Prod
Cache-Control:	private
Content-Length:	15387
Content-Type:	image/png
Date:		Tue, 12 Jun 2018 17:36:20 GMT
Server:		Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By:	ASP.NET


Подгонять
Cache-Control:	private
Content-Length:	4866
Content-Type:	image/png
Date:		Tue, 12 Jun 2018 17:38:21 GMT
Server:		Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By:	ASP.NET

Каждое предложение приветствуется. Заранее спасибо!

an0ther1

Проверьте свои данные - измените свою БД в тестовой среде на производственную БД или захватите запрос диаграммы с помощью профилировщика и подтвердите, что вы получаете ожидаемые данные

с уважением

an0ther1

Попробуйте изменить свою БД в тестовой среде на рабочую БД или использовать SQL Profiler для захвата вашего запроса в рабочей среде - исключите, что проблема не связана с данными

с уважением

alexvw

Привет an0ther1,

Спасибо за Ваш вклад; на самом деле я уже делал этот шаг раньше, но так как вы подняли его, я решил проверить его снова со свежим умом.

Как бы мне сейчас ни было неловко, оказывается, что производственный файл web.config имел неправильный набор учетных данных. Вот так просто!

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

an0ther1

Спасибо Alexvw, рад быть полезным. Я добавлю его в качестве ответа

с уважением

1 Ответов

Рейтинг:
7

an0ther1

Согласно приведенным выше комментариям. Проблема была связана с базой данных, в данном случае рабочий сервер использовал неправильные учетные данные.
Изменение строки подключения к базе данных в тестовой среде для указания на производственную БД помогает устранить неполадки, поскольку она исключает 2/3 среды и позволяет отлаживать ее, например, с помощью SQL Profiler или изменения производственной строки для указания на тестовую среду помогает определить, где находится проблема

с уважением