3

我遇到了一个奇怪的问题:我正在尝试将 ASP.NET 4.0 网站迁移到 ASP.NET Web 应用程序。Visual Studio 的“转换为 Web 应用程序”功能实际上工作得很好,但唯一不起作用的是对图表的引用。我收到错误:

命名空间“System.Web.UI.WebControls”中不存在类型或命名空间名称“Chart”

来自 .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 文件时,设计器都会恢复到旧的命名空间。

我希望避免从头开始重建所有单独的页面。有没有我错过的地方?

提前致谢。

4

1 回答 1

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>
于 2012-06-01T01:42:39.933 回答