Чтобы это снова заработало, нужно было несколько шагов.
1) Вот соответствующие фрагменты файла web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<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 defaultLanguage="c#" targetFramework="4.5">
<assemblies>
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
</system.web>
<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>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.DataVisualization" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
2) Мне нужно было игнорировать маршрут axd. URL-адрес, запрашивающий изображение диаграммы, имел вид http://sitename/reports/chartimg.axd?i=chart444334&i=0
Поэтому я должен был быть осторожным, чтобы включить этот / reports / url в маршрут.
routes.IgnoreRoute("Reports/{resource}.axd/{*pathInfo}");
Обратите внимание, что для этого требовалось разместить вверху маршрутов. Это не сработало, если поместить его в конец конфигурации маршрута. Эксперты по MVC-маршрутизации, вероятно, будут LDO, но для меня это было неочевидно.
3) В этот момент диаграммы были созданы, но я все еще получал 404 image not found при попытке предоставить изображения диаграмм. Это означает, что, возможно, в моем web.config все еще есть проблема.
Я отказался от попыток использовать обработчик HTTP и переключился на расположение на основе файлов. Это применяется к самому элементу управления диаграммой:
ImageStorageMode = ImageStorageMode.UseImageLocation;
Это не идеально, если вы не хотите, чтобы любопытный пользователь перечислял диаграммы, поскольку нумерация предсказуема, к счастью, мои диаграммы недостаточно чувствительны, чтобы вызывать беспокойство.
Это также означает, что часть файла web.config на первом шаге может быть удалена.
person
fiat
schedule
08.02.2014