首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

徹底解決 ASP.NET AJAX「Sys 未定義」錯誤的 9 大方案彙總

     編輯:ASP.NET 基礎

錯誤成因速覽

Sys is undefined 通常表示 ScriptResource.axd 或 WebResource.axd 無法正確載入,導致 AJAX 客戶端腳本庫未註冊。原因多樣,需逐一排查。

方案一:Web.config 處理器與組態修正

<httpHandlers>
  <remove verb="*" path="*.asmx" />
  <add verb="*" path="*.asmx" type="Microsoft.Web.Script.Services.ScriptHandlerFactory" validate="false" />
  <add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler" validate="false" />
</httpHandlers>
<compilation debug="true">
  <assemblies>
    <add assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </assemblies>
</compilation>

若仍報錯,嘗試將 <asp:ScriptManager> 緊貼 <form> 標籤之後。

方案二:匿名用戶存取 .axd 權限

IIS 中確保「匿名存取」對 ScriptResource.axd、WebResource.axd 有讀取權限。參考《ASP.NET AJAX 中的腳本錯誤: Sys未定義 的解決方法》詳細設定。

方案三:IIS 版本與修補程式

  • Windows 2000 Server 需升級 IIS 至最新版。
  • Windows 2003 建議安裝 SP2 及 KB912812 修補程式。

方案四:類庫版本不符

從 官網下載 對應版本的 Microsoft.Web.Extensions.dll 覆蓋至 X:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025。

方案五:IP 存取導致快取異常

以 IP 直接存取網站時,瀏覽器可能快取錯誤的腳本版本。嘗試清除瀏覽器快取或改用域名/localhost 存取。

方案六:防毒軟體誤攔截

部分防毒軟體會攔截或修改 JavaScript 回應。暫時關閉防毒軟體測試,或將網站加入白名單。

方案七:瀏覽器停用 JavaScript

確認瀏覽器未禁用 JavaScript(最基礎但常被忽略)。

方案八:重新安裝 AJAX Extensions(終極大法)

  1. 移除所有 ASP.NET AJAX 相關組件(含 Toolkit)。
  2. 從 官網 下載最新版完整安裝。
  3. 安裝完成後,VS 工具箱應出現 AJAX Extensions 與 AJAX Toolkit 兩個標籤頁。

方案九:自訂 JavaScript 變數未定義或載入順序錯誤

檢查頁面自訂腳本是否在 ScriptManager 註冊腳本之前引用 Sys 命名空間。確保腳本載入順序:核心庫 → 擴展庫 → 自訂腳本。

排查清單

  1. Web.config 處理器註冊正確?
  2. IIS 匿名存取 .axd 正常?
  3. 伺服器修補程式到位?
  4. DLL 版本一致?
  5. 瀏覽器快取/防毒/JS 開關?
  6. 重裝 AJAX Extensions?
  7. 自訂腳本順序正確?

依序驗證,多數情況可在前三步解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved