[ASP.NET][Microsoft Chart Controls] 發生 執行 ChartImg.axd 的子要求時發生錯誤。

  • 14088
  • 0

摘要:[ASP.NET][Microsoft Chart Controls] 發生 執行 ChartImg.axd 的子要求時發生錯誤。

Microsoft Chart Controls 好像出來滿久了,不過一直沒有機會用,

當然也有去準備了一下 ASP.NET 3.5 圖表與實務案例模組大全-使用VC# 這本書,

不過到現在都還沒有機會去翻閱啊!

今天剛好有同事用來產生一些報表,幫他掛到SERVER上去執行,

但是卻發生了錯誤,出現 『執行 ChartImg.axd 的子要求時發生錯誤。

但是他說在本機上面執行是OK的~~ 這就神了!

Orz... 這真是一個難懂的錯誤訊息啊!堆疊也又臭又長 ... 看不懂! >"< (要找機會來學學看堆疊了 )

這時後就請google大神給我一些幫助了!找到了瓶水相逢.Net 的網頁,真是佛心來的! :D

對照了一下自己的 web.config ,該有的都有 ... 而且似乎也是控制項會自己產生那些項目,

這就怪了 ... 因為執行老是錯誤!不過在繼續往下看討論的時候 ... 看到了 maple 的回應,

重點就在下面這一行,

<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>

要再 verb="GET,HEAD" 這個屬性質中加入 POST ,變成 verb="POST,GET,HEAD"

之後就可以正常工作了! YA~~

原來這麼簡單!不過 ... Microsoft Chart Controls 為何沒有選項可以選擇呢?

 


 

另外在使用上一開始會遇到的問題應該就是下面這個錯誤吧!

Invalid temp directory in chart handler configuration [C:\TempImageFiles\].

原來 Chart Controls 還需要一個暫存的目錄,

一開始還真的傻傻的在 C:\ 底下建立一個 TempImageFiles 目錄,然後設定成 Everyone 都可以修改,

但是看完 瓶水相逢.Net 的文章後,就改用 url 的方式,

這樣也比較安全,對於未來移植上也比較方便!

只要在web.config設定檔中找到下列這行設定,

<appSettings>
    ...
    <add key="ChartImageHandler" value="storage=file;timeout=20;
            dir=C:\TempImages\;" />
    ...
</appSettings>

把  dir=C:\TempImages\ 這個設定值改成 url=~\TempImages ,

這樣TempImages這個目錄就會和網頁在一起了,當然別忘了要在網頁的目錄下建立一個 TempImages 目錄!XD ...

 

參考資料: 瓶水相逢.Net

簡單就是美 :: { 簡單其實很不簡單 }