Asp.net Ajax 中的指令碼錯誤: Sys未定義 的解決方案

來源:互聯網
上載者:User
ajax|asp.net|錯誤|指令碼|解決

        提前祝大家新年好!前段時間日夜趕工,終於按計劃推出了項目的新版本。今天終於有時間寫點東西了。

        前段時間公司同事在項目中引入了Asp.net Ajax (beta1)版。 用著用著,在查看網頁時,不時報 'Sys'未定義 的錯誤。按照網上的辦法對web.confg 做了一翻手術,一點效果也沒有。想想也對,web.config跟本沒改動過,憑什麼突然就把問題都算在人家頭上?經過一翻摸索後,突然發現,原來是身分識別驗證惹的禍。在配置了身分識別驗證的網站中,訪問未登入頁面時,對Ajax指令碼資源的訪問被拒絕,轉向到了登入頁面,由於請求不到指令檔,頁面上對ajax的調用就無法完成,報 Sys未定義 錯誤!

       具體情況如下:

        Asp.net Ajax 的指令碼都是封裝成vxd檔案(一種IHttpHandle的實現,asp.net本身的指令碼也是採用這種方式實現的),我們在頁面上可以看到類似於如下的指令碼引用:

  asp.net的指令碼引用

<script src="/ADCAdminPortal/WebResource.axd?d=oaHQugHLcngT9QBb6bqlOQ2&t=632980334575156250" type="text/javascript"></script>

   asp.net Ajax 的指令碼引用
<script src="/ADCAdminPortal/ScriptResource.axd?d=yvZpRQrDbxpfjwZQ-SD6d59FTbTz2nfeQMLt1bp5Av-9SkGCaXBfqf0HVEgduxP2f6U7UUs1yT2Gh7BsFIoKYNnXT56B5pflXKy3iFKZUFL-PFKULAHEYgZH4c-KK2T3R8gdXVYECnCzMt0XRtk7TB9ydna4LCyYoh_WttSxiho1&t=632992694620822500" type="text/javascript"></script>
<script src="/ADCAdminPortal/ScriptResource.axd?d=yvZpRQrDbxpfjwZQ-SD6d59FTbTz2nfeQMLt1bp5Av-9SkGCaXBfqf0HVEgduxP2f6U7UUs1yT2Gh7BsFIoKYNnXT56B5pflXKy3iFKZUFL-PFKULAHEYgZH4c-KK2T3D4Nw9sGEQEXOmb5pILf4ACll48eLd5fNcjH_mOdiJtM1&t=632992694620822500" type="text/javascript"></script>

    當需要身分識別驗證時,未登入前,對web網站的任何檔案的訪問都將被拒絕。 而一般的網站都有一部分頁面是不需要身份證驗的,如:首頁,新聞頁面,登入頁面,等等。 所以,網站的Sys未定義錯誤就出現了。將 axd檔案定義為無需驗證後,該錯誤徹底解決。
   
<location path="ScriptResource.axd">
        <system.web>
            <authorization>
                <allow users="*"/>
            </authorization>
        </system.web>
    </location>

  
 另外需要注意的是,在使用vs 2005內建的web Servier中所有檔案都會被asp.net 解析,在未登入的頁面圖片無法顯示也是由此原因造成的。

 我認為90%的Asp.net Ajax的 Sys未定義 錯誤是由此造成的。在作了以上配置後,問題都能解除。在之後的某個發布到IIS的版中,仍然出現過一次指令碼錯誤,最後檢查發現仍然是由於 Ajax中的指令碼資源未解析造成的。檢查IIS中的配置無誤後,將虛擬目錄刪除,重建後,問題消失。

  提示: 

    Asp.net Ajax的指令碼錯誤基本都是由於指令碼資源檔vxd無法解析造成的。 如果出現指令碼錯誤,先查看IE中頁面的html源碼,將<scipt>指令碼引用中的src 值全部copy下來,直接放入IE的地址欄進行訪問,如果能解析為指令檔(提示下載),則表示解析成功,如果不能下載,表示vxd無法解析,原因一般都是身份證驗證造成的。如果僅僅出現一年白底黑字的 “無法找到網頁” 的IIS錯誤頁面,那就與asp.net無關了,有可能是IIS未解析vxd檔案,可以檢查IIS的預設副檔名解析配置是否被改動過。如果沒有改動過,將虛擬目錄重建。要不然就在IIS中重新註冊asp.net.
http://www.cnblogs.com/cwbboy/archive/2006/12/26/604183.html



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.