最近我将ASP.NET WebForms项目升级为MVC混合项目。
它破坏了我们的ASP.NET图表控件 - 图像不再在报表中呈现。
从图表控件的3.5升级到4.0也可能是问题所在。我将本地复制的3.5程序集中的引用替换为 System.Web.UI.DataVisualization.Charting 程序集的4.0 GAC版本。
答案 0 :(得分:2)
让这项工作重新开始有几个步骤
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的路线。请求图表图片的网址格式为 http://sitename/reports/chartimg.axd?i=chart444334&i=0
所以我必须小心将/ reports / url包含在路径中
routes.IgnoreRoute("Reports/{resource}.axd/{*pathInfo}");
请注意,这需要放置在路径的顶部。放置在路径配置的底部时,它不起作用。 MVC路由的专家可能是LDO,但对我来说并不明显。
3)此时正在生成图表,但在尝试提供图表图像时,我仍然没有找到 404图像未找到。这意味着我的web.config中仍然存在问题。
我放弃了尝试使用HTTP处理程序并切换到基于文件的位置。这适用于图表控件本身:
ImageStorageMode = ImageStorageMode.UseImageLocation;
如果您不希望好奇的用户枚举图表,因为编号是可预测的,这是不理想的,幸运的是我的图表不够灵敏,不值得关注。
这也意味着可以删除第一步中的某些web.config。