我一直在win2k3(32位)设置上使用ASP.NET图表控件一段时间没有任何问题但是已经注意到在我们的新win2k8(64位)框中我收到一条警告消息显示在事件查看器中图表控件。
在我的web.config文件中,我有以下标记告诉Chart Control我可以在哪里存储Temp文件:
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
以下是控件生成的警告消息:
活动代码:3005 事件消息:发生了未处理的异常。 活动时间:10/7/2009 2:40:03 PM 活动时间(UTC):10/7/2009 2:40:03 PM 事件ID:237c3b208962429e8bbc5a48ffd177f0 事件顺序:2860 事件发生:26 活动详细代码:0
申请信息: 应用领域:/ LM / W3SVC / 2 / ROOT-1-128993655360497729 信任等级:完整 应用虚拟路径:/ 应用程序路径:C:\ data \ sites \ mydomain.com \ 机器名称:231692-WEB
流程信息: 进程ID:4068 进程名称:w3wp.exe 帐户名称:NT AUTHORITY \ NETWORK SERVICE
异常信息: 异常类型:ArgumentException 异常消息:找不到图像。
请求信息:
请求网址:http://www.mydomain.com/ChartImg.axd?i=chart_0_3.png&g=bccc8aa11abb470980c60e8cf1e71e15
请求路径:/ChartImg.axd
用户主机地址:我的域名ip
用户:
经过身份验证:错误
验证类型:
线程帐户名称:NT AUTHORITY \ NETWORK SERVICE
主题信息: 主题ID:7 线程帐户名称:NT AUTHORITY \ NETWORK SERVICE 冒充:假 堆栈跟踪:在System.Web.UI.DataVisualization.Charting.ChartHttpHandler.ProcessSavedChartImage(HttpContext context) 在System.Web.UI.DataVisualization.Charting.ChartHttpHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) 在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)
值得指出的是,所有图表图像都在屏幕上正确显示,因此我不确定是否在何处/何处发现图像未找到错误。这是64位问题吗?
谢谢, 富
答案 0 :(得分:1)
每当用户尝试将图表从IE复制或拖动到Word文档时,我都会遇到同样的错误。默认情况下,服务器在将图表图像传送到用户的浏览器后立即删除图表图像,IE似乎不会复制缓存的图像数据。我不确定它背后的机制,但无论是复制还是粘贴,都必须再次从服务器获取图像。通过将web.config中的条目更改为:
解决了该问题<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;deleteAfterServicing=false;" />
答案 1 :(得分:0)
您是在本机IIS7站点中运行,还是在ASP.NET 2.0兼容模式下运行的IIS7站点?
IIS可能只是对它的日志记录有点冗长,或者记录存在问题,然后又回到传统的支持类型模式 - .axd文件是通常不存在的虚拟文件磁盘,它们作为web.config中的处理程序映射 - 请注意,IIS7现在支持<system.webServer>
元素,并且您的处理程序应映射到新站点,而不是<system.web>
部分。
答案 2 :(得分:0)
我花了一周的时间来研究这个问题,似乎没有人能够回答为什么我在事件查看器中收到警告消息。
在主要的MS Chart论坛上也问了这个问题,但没有运气。链接到这里:http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/thread/75f50254-0f02-4a73-bfbe-afab31f15f77
将标记为仅仅回答问题,但如果我找到答案,将来会更新。我怀疑它发生在更多的人身上,但因为前端的一切看起来都没问题,所以没有人真正检查过日志,所以他们可能没有意识到它正在发生在他们身上。
答案 3 :(得分:0)
根据我的经验,如果用户尝试打印网页,如果在web.config中deleteAfterServicing不为false,则会收到此错误消息,因为该图像已被删除。
此外,如果deleteAfterServicing = false,如果user1生成图表,则user2生成覆盖图表图像的图表,user2可以成功打印图表,但user1将触发异常。