我已经在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活动编号: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异常消息:找不到映像 .
请求信息:请求URL:http://www.mydomain.com/ChartImg.axd?i=chart_0_3.png&g=bccc8aa11abb470980c60e8cf1e71e15请求路径:/ChartImg.axd用户主机地址:my domain ip用户:
经过身份验证:错误身份验证类型:
线程帐户名称:NT AUTHORITY \ NETWORK SERVICE
线程信息:线程ID:7线程帐户名称:NT AUTHORITY \ NETWORK SERVICE模拟:False堆栈跟踪:位于System.Web.UI.DataVisualization的System.Web.UI.DataVisualization.Charting.ChartHttpHandler.ProcessSavedChartImage(HttpContext上下文) . System.Web.HttpApplication.ExecuteStep上的System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中的Charting.ChartHttpHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context)(IExecutionStep step,Boolean&completedSynchronously)
值得指出的是,所有图表图像都在屏幕上正确显示,因此我不确定是否在何处/何处发现图像未找到错误 . 这是64位问题吗?
谢谢,Rich
4 回答
我花了一周的时间来研究这个问题,似乎没有人能够回答为什么我在事件查看器中收到警告消息 .
在主要的MS Chart论坛上也问了这个问题,但没有运气 . 链接到这里:http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/thread/75f50254-0f02-4a73-bfbe-afab31f15f77
将标记回答只是为了回答问题,但如果我找到答案,将来会更新 . 我怀疑它发生在更多的人身上,但因为前端的一切看起来都没问题,所以没有人真正检查过日志,所以他们可能没有意识到它正在发生在他们身上 .
每当用户尝试将图表从IE复制或拖动到Word文档时,我都会遇到同样的错误 . 默认情况下,服务器在将图表图像传送到用户的浏览器后立即删除图表图像,IE似乎不会复制缓存的图像数据 . 我不确定它背后的机制,但无论是复制还是粘贴,都必须再次从服务器获取图像 . 通过将web.config中的条目更改为:
您是在本机IIS7站点或在ASP.NET 2.0兼容模式下运行的IIS7站点中运行它吗?
它记录或记录磁盘上通常存在's an issue, and then falling back to a legacy support type mode - the .axd files are virtual files that don' t,它们作为web.config中的处理程序映射 - 请注意,IIS7现在支持
<system.webServer>
元素,并且应该在那里为新站点映射处理程序,而不是在<system.web>
部分 .根据我的经验,如果用户尝试打印网页,如果在web.config中deleteAfterServicing不为false,则会收到此错误消息,因为该图像已被删除 .
此外,如果deleteAfterServicing = false,如果user1生成图表,则user2生成覆盖图表图像的图表,user2可以成功打印图表,但user1将触发异常 .