首页蓝耳朵|小小蓝耳朵广州图书馆外文室英语儿童读物资源介绍网佛教青年之友旧版收集永硕E盘Phonics Short Vowels Game 
今天早上IIS突然出了问题,所有TreeView控件全部不可以读取脚本,图片不显示
所属栏目:ASP.NET(webform)  时间:2010-11-02 09:31  作者:狼子

查了axd映射存在:

因为星星和小燕子和我用的是同一个版本管理软件,文件是相同的,web.config文件是相同的,他们在xp上可以正常显示TreeView,所以文件系统没有问题,web.config没有问题

问题在我的机器上。。。

iis映射没有问题,就是,问题在我机器上

因为机器昨天是正常的,所以我先重启IIS,重启机器,还是不行,我以为是昨天打了什么补丁搞的,查了日志,补丁没问题

最后google到这个:

WebResource.axd引起的问题以及asp.net程序集与服务器时间的问题:http://www.51obj.cn/?p=744

看到程序集与服务器时间的问题,我就想起来了,昨天为了测试一个查询页面默认进入显示当天,我把系统时间设置成2010-8-30了。。。现在程序集生成的时间在系统时间后,搞到程序集无法调用

我把系统时间设置正常2010-11-2,问题解决了

下面是上文件的全文引用,原文转自:http://www.51obj.cn/?p=744

 

WebResource.axd引起的问题以及asp.net程序集与服务器时间的问题

WebResource.axd 如若遇到以下情况:

1)、所有涉及WebResource.axd引用的脚本不可使用;

2)、TreeView控件中图片不能显示,出现“X”号,当然这个也属于与WebResource.axd文件相关联;

3)、类似使用HyperLink、DropDownList等控件触发的“WebForm_PostBackOptions”未定义及下图中的WebForm_AutoFocus('xx')未找到对象等事件报错。

以上均是由WebResource.axd提供,此文件并非真实存在,它是ASP.NET2.0提供的Web Resources管理模型,用于管理images、CSS、js等外部资源,它属于IIS中的一个ISAPI映射。

关于如何管理Web Resource资源请参考http://birdshome.cnblogs.com/archive/2004/12/19/79309.htmlhttp://blog.miniasp.com/?tag=/webresource.axd 这两篇文章。

.axd文件映射设置位于IIS主目录>应用程序设置>配置>应用程序扩展。

WebResource.axd后跟有参数,形如

<script src="/WebResource.axd?d=TVfbQ3jRv_bGyGJiNtAlIQ2&amp;t=634030634711406250" type="text/javascript"></script>

<img src="/WebResource.axd?d=NPU1tNcW9bhj2HGf2OPUXyRv__ALwmYPAmAw1DkERv01&amp;t=634030634711406250" alt="" />

这里d显示为directory,对应资源的路径;t为timestamp,这个参数是为了保证资源不被缓存(还记得验证码后的Math.random()吗?)。

因此出现此类与WebResource.axd相关的问题,原因一般就是IIS中未对此axd文件进行处理,导致相应的图片、js等资源文件无法输出,引发此类问题。解决方法是,首先就应当检查IIS中是否已经添加了axd的映射;可以手工添加,不过还是推荐先运行aspnet_regiis.exe -i进行安装,然后查看是否已添加,若没有再进行手工添加。注意这里一定要将“确认文件是否存在”的小勾勾取消选择,见上图。

 

Assembly与服务器时间的问题


是不是有时候按上面讲的做还是解决不了问题?那这里就很大可能是下面的这个原因了:你的服务器时间不对——肯定是比正常时间要早。
这种错误可以打开IE8的开发人员工具,打开脚本面板,选择其中的一个WebResource.axd文件,其中源文件会报如下错误:

[ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。 参数名: utcDate] System.Web.HttpCachePolicy.UtcSetLastModified(DateTime utcDate)

这里大概是看出是哪个地方出现的原因了:是因为当前asp.net生成的dll程序集的最后修改时间+2316706小于当前时间,也就是说服务器时间比程序集生成时间早,导致无法使用程序集。

这是我的bin目录,生成时间是2010-3-14

而我的当前系统时间为2009年3月14日,整整早了一年啊。

关于这个程序集与服务器时间问题的更详细内容,可参考此文http://blog.brianhartsock.com/2009/02/21/systemargumentoutofrangeexception-at-systemwebhttpcachepolicyutcsetlastmodifieddatetime-utcdate/

 

小楼宝宝的涂鸦花花(Imitater)的博客起名称骨测字皖ICP备06000023号-17