我遇到了一个奇怪的问题:我试图将ASP.NET 4.0网站迁移到ASP.NET Web应用程序。 Visual Studio"转换为Web应用程序"函数实际上工作得很好,但唯一不起作用的是对图表的引用。我收到了错误:
类型或命名空间名称' Chart'在命名空间中不存在 ' System.Web.UI.WebControls'
来自.designer文件。设计者自动创建这种类型的代码:
protected global::System.Web.UI.WebControls.Chart ClientHoursPie;
根据我所做的研究,用于图表的正确4.0命名空间是System.Web.UI.DataVisualization.Charting。我在web.config中添加了以下组件(从原始网站复制,工作正常):
<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.0">
<assemblies>
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
我可以更正设计器文件中的命名空间,但每次保存aspx文件时,设计器都会恢复到旧的命名空间。
我希望避免从头开始重建所有单个页面。我错过了什么地方?
提前致谢。
答案 0 :(得分:1)
我能够通过在web.config中添加一些我错过的条目来解决问题。遇到此问题的任何人都需要确保包括:
<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>
这个(在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>