[ASP.net] Chart Control Troubleshooting(Chart控制項疑難排解)

[ASP.net] Chart Control Troubleshooting(Chart控制項疑難排解)

當畫面上有ASP.net Chart控制項,執行起來會出錯的話,一般改一下Web.config就行了。

如果遇到工具箱沒有Chart控制項,也是改Web.config重開Visual Studio再重新拖拉(或自己打Code)就解決了。

 

.net 4可能發生的問題:
Invalid temp directory in chart handler configuration [c:\TempImageFiles\].

建議解法:

先在網站根目錄新建資料夾TempImages
然後在Web.config檔裡加



     <!--網站根目錄底下要建一個TempImages資料夾-->
    <add key="ChartImageHandler" value="storage=file;timeout=20;url=~/TempImages;" /> 

</appSettings>

由.net3.5升級到.net4 Web Site可能發生的問題
Parser Error Message: Unknown server tag 'asp:Chart'.

解法:


            <controls>            
                      <!--圖表控制項必要的項目-->
                      <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            </controls>
            <tagMapping>
                ...
            </tagMapping>
</pages> 

Error executing child request for ChartImg.axd.
Exception Details: System.Web.HttpException: Error executing child request for ChartImg.axd.

解法:


      <!--圖表控制項必要的項目-->
      <add path="ChartImg.axd" verb="POST,GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    </httpHandlers> 

 

 

在現有的.net3.5(不管是不是SP1)或.net2.0 Web Site加入Chart Control的建議流程:

(要執行web site的電腦)

1.先裝好.net Framework 3.5 SP1

Microsoft .NET Framework 3.5 Service pack 1 (Full Package) - 繁體中文

2.安裝Chart Control

Microsoft Chart Controls for Microsoft .NET Framework 3.5 

3.安裝完Chart Control後

把C:\Program Files\Microsoft Chart Controls\Assemblies底下的Web相關dll檔放在網站的Bin資料夾底下

4.改Web.config


   <!--網站根目錄底下要建一個TempImages資料夾-->
    <add key="ChartImageHandler" value="storage=file;timeout=20;url=~/TempImages;" />
</appSettings>

<httpHandlers>
     <add path="ChartImg.axd" verb="POST,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>
    <handlers>
     <remove name="ChartImageHandler"/>
      <add name="ChartImageHandler" preCondition="integratedMode" verb="POST,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>

<controls>
   <add tagPrefix ="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</controls>

2011.5.4 追加:

無法載入檔案或組件 'System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其相依性的其中之一。 系統找不到指定的檔案

1.先裝好.net Framework 3.5 SP1

Microsoft .NET Framework 3.5 Service pack 1 (Full Package) - 繁體中文

2.安裝Chart Control

Microsoft Chart Controls for Microsoft .NET Framework 3.5 

3.安裝完Chart Control後

把C:\Program Files\Microsoft Chart Controls\Assemblies底下的Web相關dll檔放在網站的Bin資料夾底下

 

其他相關資料:

Microsoft Chart Controls - 執行 ChartImg.axd 的子要求時發生錯誤。 - 瓶水相逢 - 艾小克- 點部落

 

2011.6.21追記

No http handler was found for request type 'GET'

解法來源:http://stackoverflow.com/questions/2117102/mscharts-no-http-handler-was-found-for-request-type-get-error

重點要改config區段:


  <handlers>     
     <add name="ChartImg" verb="*" 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>