僅在生產伺服器上出現 Javascript 錯誤?
我正在發布從開發到生產的幾個 asp.net 網站。一切似乎在開發中執行良好,但在發佈到生產環境時,我們在訪問該站點時遇到了一些 javascript 錯誤。這似乎是伺服器上的東西,儘管相同的程式碼已部署到測試伺服器並且可以在相同的客戶端上正常工作。伺服器是使用 IIS7 的 Windows 2008
拋出的錯誤:
一些語法錯誤 (scriptResource) - 其中 10 個
Error: syntax error Source File: http://website.com/ScriptResource.axd?d=abc032_vah79hasdf87&t=123456789 Line: 3 Source Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
錯誤與上述相同,但使用 WebResource.axd 而不是 ScriptResource.axd - 其中 2 個
然後兩個似乎是真正的原因?
Sys is not defined
和
WebForm_AutoFocus is not defined
—————– 附錄 ——————————–
根據建議,我查看了 ScriptResource.axd 和 WebResource.axd
正在部署的 Web 應用程序具有表單身份驗證,並且如果引用了登錄頁面以外的任何頁面,則會重定向到登錄頁面。ScriptResource.axd 和 WebResource.axd 似乎正在發生這種情況(即登錄頁面嘗試引用這些項目,發生重定向,因此他們沒有獲取 javascript,引發錯誤)
為此,我在 web.config 中添加了“位置”標籤,以嘗試允許所有使用者訪問這些項目,因此登錄頁面可以正常工作(請參閱下面的相關 web.config 部分)
<system.web> <authentication mode="Forms"> <forms loginUrl="login.aspx" defaultUrl="home.aspx"/> </authentication> <authorization> <deny users="?"/> <allow users="*"/> </authorization> ... </system.web> <location path="ScriptResource.axd"> <system.web> <authorization> <allow users="*"/> <!-- allow all users --> </authorization> </system.web> </location> <location path="WebResource.axd"> <system.web> <authorization> <allow users="*"/> <!-- allow all users --> </authorization> </system.web> </location>
不幸的是,這也沒有解決問題。是否有一些設置/配置選項可以阻止位置標籤工作?我們為應用程序中的頁面添加了相同的標籤(用於測試),它適用於開發人員的機器,但不適用於伺服器。看起來如果我們可以讓這些位置標籤在伺服器上工作一切都會工作,有什麼建議嗎?
在新的瀏覽器視窗中打開源文件 (…ScriptResource.axd…) 的完整 URL。您應該會看到一些 JavaScript 內容。如果沒有,則 asp.net ajax 組件未正確安裝。
Sys is not defined
表示沒有Ajax客戶端組件,找不到sys類。
如果您使用的是 .net 3.5,它是框架的一部分,問題應該在 web.config 中,使用 .net 2.0 時,您需要ASP.NET AJAX 1.0,如果您在伺服器上安裝此 msi,文件會進入GAC,.net 組件的中心位置。您可以在不安裝 msi 的情況下將單個文件 System.Web.Extensions.dll 放入您的 bin 目錄,但您仍然需要在 web.config 文件中進行正確設置。ajax.asp.net網站有很多關於這一切的資訊。
聽起來您可能缺少伺服器上的組件,或者 Web 本身沒有正確配置為使用 ASP.NET Ajax 組件。也許開發人員使用了另一個庫,例如 Ajax.NET Toolkit,並且需要將它安裝在伺服器上?