最近遇到一个很郁闷的问题,所有的服务器端产生的脚本都提示未定义,因为在之前项目一直是好好的,所以一开始怀疑是IDE出了问题,后来在网上看到一篇文章,文章摘录如下:
这是一个javascript的错误提示,按道理说是客户端脚本错误,与.net应该无关,但是稍了解一下asp.net框架就会知道,asp.net的所有控件,到了客户端都会生成html与javascrpt代码;这显然是与.net相关的javascript代码报错了。
不知道咋回事儿;去网上搜了一下,解决方法只有一种,就是添加axd的映射;如图:
但是axd文件的映射默认是有的,除非有人刻意把它去掉了,所以才需要再手工加上去;而我的服务器是自己管理,我没有去动过的;应该不是因为这个原因;
我还是按照上面的方法查看了一下,IIS没有问题,该有的映射都有,没什么不正常的;但我的问题还依然没有解决;去网上再搜,也没有其它的方法可参考的;
不过,想想,既然是axd文件的问题,就从它入手好了;打开一个aspx的文档(这是指,在浏览器中查看aspx页面的HTML源码),在页面的头部会有类似的一段代码:
<script src="/WebResource.axd?d=enO4GmuCFPQ-aRP3AtyjOezREIh1F2__Pcm7PqCMago8S3Ai_NH5atoAxKmOQ6Ir0&t=633004894900000000" type="text/javascript"></script>
上面的代码是调用javascript的代码,而src却链接了一个动态页,可想而知,这个js文件是动态生成的喽;如果它生成出错,页面调用不到js文件,自然会提示javascript的错误,提示找不到相关对象。
把上面src中的代码复制下来,放到浏览器地址中运行;其实就是把它当做一个aspx页面来执行;
http://127.0.0.1/WebResource.axd?d=enO4GmuCFPQ-aRP3AtyjOezREIh1F2__Pcm7PqCMago8S3Ai_NH5atoAxKmOQ6Ir0&t=633004894900000000
错误报出来了;在哪个文件的哪一行,错误信息与aspx文档报错的方式是一样的;
这样我就很清楚的知道是哪里出错了;
于是照着上面的方法做了,果真如此,在浏览器里面输入上面axd文件地址,提示
指定的参数已超出有效值的范围。
参数名: utcDate
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
又查了网上的资料,提示竟和系统时间有关,这才知道,早上开机的时候,系统时间设成了2008年,我真是超级郁闷,这个.net程序要把人气死。改成正确时间后,就可以了,彻底晕了。