将具有 3.5 版图表控件的 ASP.NET 3.5 网站升级到 ASP.NET 4 需要更改 web.config 和注册指令
将具有 3.5 版图表控件的 ASP.NET 3.5 网站升级到 ASP.NET 4 将导致在生成时出现以下错误:
错误 1 类型“System.Web.UI.DataVisualization.Charting.Chart”同时存在于“c:\Windows\assembly\GAC_MSIL\System.Web.DataVisualization\3.5.0.0__31bf3856ad364e35\System.Web.DataVisualization.dll”和“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.DataVisualization.dll”中的 C:\Websites\Vs2008Sp1_Website_35_Cs_WithChart\Default.aspx 15
解决此问题的方法:
升级后,必须将 web.config 中仍指向 3.5 版图表控件的引用更新为引用版本 4。
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">lt;controls>
<add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</controls>
</pages>
<httpHandlers>
<add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
......
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="ChartImageHandler"/>
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</handlers>
</system.webServer>
......
必须删除 Web 窗体页中的注册指令或将其更新为引用版本 4。
<%@ Register assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" namespace="System.Web.UI.DataVisualization.Charting" tagprefix="asp" %>
可能必须删除 bin 文件夹中的现有 System.Web.DataVisualization 程序集,因为此程序集是 .NET Framework 4 的一部分。