代码改变世界

Web系统突然爆”Asp.net ajax客户端框架未能加载“的一种可能原因(误改服务器系统时间)

  flyingfish  阅读(4498)  评论(4编辑  收藏  举报

为便于将WebGIS应用系统方便的部署在笔记本上做演示用,特意制作了一个虚拟机服务器环境,需要时只要把虚拟机vhd,vmc文件(Virtual PC 2007)拷贝到目标机器,安装虚拟机程序即可,省去了部署GIS服务器、WEB服务器、数据库等一系列软件,非常方便快捷。此方法一经试用用,备受欢迎,已多次在用于在笔记上部署复杂应用系统。

 

近日将一配置好的Web应用程序以服务器虚拟机形式部署在一台笔记本上,罕见的遇到问题。部署好后,在本上访问,IE7.0连爆三个脚本错误:

1、Asp.net ajax客户端框架未能加载

2、‘Sys’未定义

3、‘Sys’未定义(但不在同一行)

 

试验:

1、用另外机器的ie、ff、ietester等访问均存在问题;

2、将同一虚拟机部署在其他数台计算机上均未发现此问题(此前已在数台笔记本上跑过,未发现问题);

3、经Baidu、Google后,试验了:改webconfig,关防火墙、关杀毒、配置ie安全选项,设置iis身份认证等均未解决问题。

 

经以上试验,采用排除法,可以排除不是虚拟机的问题、不是浏览器问题,只可能是笔记本环境的问题。

而笔记本是新的X200,正版XP系统,之前在同样环境机器上部署过几次都未发下问题。

 

崩溃之际,只有打算用一个正常情况下的机器的XP系统Ghost笔记本的系统。

最后时刻再次查看出错网页源码,将类似“<script src="/ScriptResource.axd?d=jNIytBNJCfUTy70eBg_LNlQ9wgtGeS579E4Uf__GgQPICXHl8yDxXLmmzSKUxulSOHo4joq_PpUDjHshbgRnkSDrwSc-SLcpSHxCVi8jHMo1&amp;t=ffffffffdcd72ae2" type="text/javascript"></script>”

语句放在IE中执行,收到如下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
指定的参数已超出有效值的范围。
参数名: utcDate 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
 
异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。
参数名: utcDate
 
源错误: 
 
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  
 
堆栈跟踪: 
 
[ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。 参数名: utcDate] System.Web.HttpCachePolicy.UtcSetLastModified(DateTime utcDate) +3352419 System.Web.HttpCachePolicy.SetLastModified(DateTime date) +47 System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +1904 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +358 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64  
 
 
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433 

 

再次将“HttpCachePolicy.UtcSetLastModified”作为关键字Google到这篇篇帖子“asp.net utcDate 指定的参数已超出有效值的范围。求具体解决方法!"http://topic.csdn.net/u/20090305/12/abfaf0b3-e0ad-46f7-b64c-a9df9d336ec5.html

其中关键一段如下:

赶快查看笔记本系统时间,晕倒!竟然是2006年7月1日,今天的正确日期是2010年7月27日啊。不知道谁改的,害我晚上加班,找到他打屁股。

改了时间,一切复归正常。

 

总结原因,就和上边引用的一样:客户端Assembly缓存机制依赖Assembly时间戳,实践中务必保证服务器当前时间大于所依赖类库的创建时间。

 

参考资料:

1、http://topic.csdn.net/u/20090305/12/abfaf0b3-e0ad-46f7-b64c-a9df9d336ec5.html

2、http://blog.csdn.net/lvzhqi/archive/2009/03/02/3949459.aspx

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2008-07-27 Eclipse3.2下进行ArcGIS Server 9.2 Java WebADF开发手记 - Eclipse使用技巧
2008-07-27 Eclipse3.2下进行ArcGIS Server 9.2 Java WebADF开发手记 - 环境配置篇
点击右上角即可分享
微信分享提示