Asp.net

ASP.NET Charting Control 在生產伺服器上不起作用

  • August 28, 2014

我有一個嚴重依賴圖表的應用程序,目前圖表將在 ASP.Net 開發伺服器中工作,但是當我嘗試發佈到我的伺服器(Win 2008 Server R2、IIS 7)時,圖表不顯示。

使用 Firebug,我可以看到對 ChartImg.axd 的呼叫返回 404,而我得到的只是 IE 中的空白圖像持有者,或者在 Firefox 中什麼都沒有。到目前為止,我已經搜尋了大約 3 或 4 個小時,並且幾乎嘗試了所有推薦的東西,但似乎沒有任何效果。

我想使用記憶體/HttpImageHandler,而不是 ImageLocation 配置。

我的網路配置

   <appSettings>
   <!--<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />-->
   <add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=false" />
 </appSettings>
 <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>
 </system.webServer>
 <system.web>
   <httpHandlers>
     &lt;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" /&gt;
   &lt;/httpHandlers&gt;
   &lt;pages&gt;
     &lt;controls&gt;
       &lt;add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
         assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /&gt;
     &lt;/controls&gt;
   &lt;/pages&gt;
   &lt;compilation debug="true" targetFramework="4.0"&gt;
     &lt;assemblies&gt;
       &lt;add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/&gt;
     &lt;/assemblies&gt;
   &lt;/compilation&gt;
   &lt;customErrors mode="Off"/&gt;
 &lt;/system.web&gt;

有沒有人知道我會出錯以防止它在我的伺服器上執行?

我找到了問題的答案,但我相信我的問題特別源於我的程式碼執行方式。

一旦我privateImages=false在 appSettings 下為 ChartImageHandler 設置,我的圖像就沒有問題了,使用帶有文件儲存的 ImageLocation 或帶有記憶體儲存的 HttpHandler。

我查看了此處的清單,並意識到我的程式碼沒有以下內容:

  • 驗證
  • 會話ID
  • 匿名ID

所以隱含的預設設置privateImages=true讓我無法下載我的圖像。當我設置時,privateImages=false我沒有任何問題,並且圖表工作正常。我將我的應用程序設置為使用 Windows 身份驗證,並且privateImages=true現在正在使用 Image Location 設置或 HttpHandler 設置生成我的圖表。

希望這會有所幫助。我知道我花了很長時間四處探勘,卻一無所獲。

引用自:https://stackoverflow.com/questions/7933830