这是我的问题,有一个使用Web场和负载均衡器托管的Web应用程序。该应用程序在Framework 4.0,Windows 2003服务器和IIS6上运行。我们的本地主机环境是Windows 7和IIS7。
我们注意到间歇性异常“未找到图像”,并注意到Web.config指向3.5
所以我们对web.config进行了更改,指向4.0
<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"/>
我们还使用网络共享来存储在appSettings
中设置的图表图像<add key="ChartImageHandler" value="storage=file;timeout=300;dir=\\server\webdata\charts\;deleteAfterServicing=false;"/>
在web.config中进行更改后,图像将不会显示在运行IIS6的生产服务器或运行IIS7的本地环境中。所以我使用图表控件对所有webforms进行了更改,并添加了ImageStorageMode =“UseImageLocation”。
在更改IIS7和IIS6中显示的图表图像之后,但在生产IIS6中,它们被放置在webform目录中并忽略处理程序位置(网络共享)。我的本地环境工作正常,但我无法正确生产设置。我的所有web.config设置都在下面,非常感谢任何帮助。
<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=300;dir=\\SERVER\webdata\charts\;deleteAfterServicing=false;"/>
</appSettings>
<system.web>
<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" defaultLanguage="vb" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
<!--IIS 7 Handler Section-->
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<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>
答案 0 :(得分:0)
由于您在服务器上使用负载平衡,因此可能找不到正确的映像位置。为什么不尝试使用会话来存储图像?
<appSettings>
<add key="ChartImageHandler" value="storage=session;timeout=20;" />
</appSettings>
参考this了解更多信息。我们在Web场上遇到了同样的问题。将deleteAfterServicing
设置为true是明智的。