首先在百度和Google中搜尋"sys 未定義"這個關鍵字,你會發現能搜到萬千上萬條相關的記錄,但是總結問題根源不外下面幾種。而我遇到似乎還比較特別,我沒有在網上找到相應的解決方案。
首
先,我們看一下網上出問題的同志們雖說都是"Sys 未定義",但是情況卻不盡相同,有的人使用的是Atlas版本,有的使用的Asp.net
ajax Beta,有的則是正式發行版Asp.net ajax Beta,所以解決的方法也有區別了。下面簡單歸納一下現有的幾種方法:
1、Web.config配置問題:
將Web.config中的相關節配置成如下,然後重新編譯你的程式: 程式碼<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add
verb="*" path="*.asmx" validate="false"
type="Microsoft.Web.Script.Services.ScriptHandlerFactory,
Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<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 id="ScriptManager1" runat="server" AsyncPostBackTimeout="200" />寫在緊隨<form>標記內
2、許可權問題:
匿名使用者無法訪問 axd檔案時,就會造成此類錯誤,關於這個的討論大家可以看看 《Asp.net Ajax 中的指令碼錯誤: Sys未定義 的解決方案》,在這裡作者有詳細的討論
3、IIS的問題,由於IIS版本問題也可能導致此類錯誤,比如你用的伺服器作業系統是2000 server等等,你需要把它們升級到最新版本,這主要是針對IIS的升級。Win2003使用者可以從下面這個地址下載到相關的補丁http://download.microsoft.com/download/7/b/1/7b1f473c-547d-4196-b00d-bf3aa2a3e898/WindowsServer2003-KB912812-x86-CHS.exe (建議你安裝sp2並即時更新升級)
相關討論大家還可以看一下這兒的討論:部落格園——http://www.cnblogs.com/ltc31/archive/2006/09/20/510003.html
4、類庫問題:
如果真是這兒的問題應該解決起來就比較簡單了,你只需要安照下面的步驟做即可
到http://ajax.asp.net/downloads/beta/default.aspx?tabid=47&subtabid=471 下載一個庫檔案然後解壓到X:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025 (x代表你安裝路徑盤符)
即可
5、有人提到用IP訪問就會有問題,用Localhost或者網域名稱就正常,這兒我估計是緩衝的問題,可以更新一下緩衝看看是不是能夠解決
6、另外就殺毒軟體的問題了,如果你的殺毒軟體比較敏感的話也可能會殺掉了某些js程式導致此類問題的產生
7、當然了,你首先得檢查一下你的瀏覽器沒有禁止javascript指令碼才行(這個應該最早確認)
8、
我自己解決辦法:我在試了上面幾種方法之後都沒有很好地解決,於是我就把所有的Asp.net
Ajax的東東全部刪除,包括ToolKits,然後再從asp.net上重新下載最新版本的Ajax安裝之,發現問題簡簡單單地解決了。安裝成功後,在
VS的工具箱裡分別多了Ajax Extions和Ajax ToolKits兩個選項卡,之後我安裝後是沒有的……
大家不妨也試一下,按理說成功安裝完成之後就可以正常使用的
9、程式本身的問題:如果你在程式中有自己的Javascript代碼的話,你需要仔細檢查一下用戶端執行後的代碼情況,看看是不是某些變數在未定義前就使用了,特別要注意載入的順序,總之這也是一個造成sys 類型未定義的一個原因