提前祝大家新年好!前段時間日夜趕工,終于按計(jì)劃推出了項(xiàng)目的新版本。今天終于有時間寫點(diǎn)東西了。
前段時間公司同事在項(xiàng)目中引入了Asp.net Ajax (beta1)版。 用著用著,在查看網(wǎng)頁時,不時報(bào) Sys未定義 的錯誤。按照網(wǎng)上的辦法對web.confg 做了一翻手術(shù),一點(diǎn)效果也沒有。想想也對,web.config跟本沒改動過,憑什么忽然就把問題都算在人家頭上?經(jīng)過一翻摸索后,忽然發(fā)現(xiàn),原來是身份驗(yàn)證惹的禍。在設(shè)置了身份驗(yàn)證的網(wǎng)站中,訪問未登錄頁面時,對Ajax腳本資源的訪問被拒絕,轉(zhuǎn)向到了登錄頁面,由于請求不到腳本文件,頁面上對ajax的調(diào)用就無法完成,報(bào) Sys未定義 錯誤!
具體情況如下:
Asp.net Ajax 的腳本都是封裝成vxd文件(一種IHttpHandle的實(shí)現(xiàn),asp.net本身的腳本也是采用這種方式實(shí)現(xiàn)的),我們在頁面上能看到類似于如下的腳本引用:
asp.net的腳本引用
asp.net Ajax 的腳本引用
當(dāng)需要身份驗(yàn)證時,未登錄前,對web站點(diǎn)的所有文件的訪問都將被拒絕。 而一般的網(wǎng)站都有一部分頁面是不必身份證驗(yàn)的,如:首頁,新聞頁面,登錄頁面,等等。 所以,網(wǎng)站的Sys未定義錯誤就出現(xiàn)了。將 axd文件定義為無需驗(yàn)證后,該錯誤完全解決。
另外需要注意的是,在使用vs 2005自帶的web Servier中所有文件都會被asp.net 解析,在未登錄的頁面圖片無法顯示也是由此原因造成的。
我認(rèn)為90%的Asp.net Ajax的 Sys未定義 錯誤是由此造成的。在作了以上設(shè)置后,問題都能解除。在之后的某個發(fā)布到IIS的版中,仍然出現(xiàn)過一次腳本錯誤,最后檢查發(fā)現(xiàn)仍然是由于 Ajax中的腳本資源未解析造成的。檢查IIS中的設(shè)置無誤后,將虛擬目錄刪除,重建后,問題消失。
提示:
Asp.net Ajax的腳本錯誤基本都是由于腳本資源文件vxd無法解析造成的。 如果出現(xiàn)腳本錯誤,先查看IE中頁面的html源碼,將
新聞熱點(diǎn)
疑難解答
圖片精選