提前祝大家新年好!前段时间日夜赶工,终于按计划推出了项目的新版本。今天终于有时间写点东西了。
前段时间公司同事在项目中引入了Asp.net Ajax (beta1)版。 用着用着,在查看网页时,不时报 Sys未定义 的错误。按照网上的办法对web.confg 做了一翻手术,一点效果也没有。想想也对,web.config跟本没改动过,凭什么忽然就把问题都算在人家头上?经过一翻摸索后,忽然发现,原来是身份验证惹的祸。在设置了身份验证的网站中,访问未登录页面时,对Ajax脚本资源的访问被拒绝,转向到了登录页面,由于请求不到脚本文件,页面上对ajax的调用就无法完成,报 Sys未定义 错误!
具体情况如下:
Asp.net Ajax 的脚本都是封装成vxd文件(一种IHttpHandle的实现,asp.net本身的脚本也是采用这种方式实现的),我们在页面上能看到类似于如下的脚本引用:
asp.net的脚本引用
asp.net Ajax 的脚本引用
当需要身份验证时,未登录前,对web站点的所有文件的访问都将被拒绝。 而一般的网站都有一部分页面是不必身份证验的,如:首页,新闻页面,登录页面,等等。 所以,网站的Sys未定义错误就出现了。将 axd文件定义为无需验证后,该错误完全解决。
另外需要注意的是,在使用vs 2005自带的web Servier中所有文件都会被asp.net 解析,在未登录的页面图片无法显示也是由此原因造成的。
我认为90%的Asp.net Ajax的 Sys未定义 错误是由此造成的。在作了以上设置后,问题都能解除。在之后的某个发布到IIS的版中,仍然出现过一次脚本错误,最后检查发现仍然是由于 Ajax中的脚本资源未解析造成的。检查IIS中的设置无误后,将虚拟目录删除,重建后,问题消失。
提示:
Asp.net Ajax的脚本错误基本都是由于脚本资源文件vxd无法解析造成的。 如果出现脚本错误,先查看IE中页面的html源码,将
新闻热点
疑难解答
图片精选