Javascript错误只在生产服务器上?

我正在发布几个asp.net网站从开发到生产的过程。 一切似乎都在开发工作正常,但在发布到生产时,我们得到一些访问该网站时的JavaScript错误。 这似乎是在服务器上的东西,虽然这个相同的代码已经部署到testing服务器,并与相同的客户端正常工作。 该服务器是使用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 

—————–附录——————–

根据build议,我查看了ScriptResource.axd和WebResource.axd

如果任何页面被引用而不是login页面,则正在部署的Web应用程序具有表单身份validation并redirect到login页面。 看来,这是发生在ScriptResource.axd和WebResource.axd(即login页面试图引用这些项目,redirect发生,所以他们没有得到的JavaScript回来,错误抛出)

为此,我在web.config中添加了“location”标签,以允许所有用户访问这些项目,所以login页面将工作(请参阅下面的相关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> 

这个不幸也没有解决问题。 有一些设置/configuration选项,停止位置标记工作? 我们为应用程序中的页面添加了相同的标签(用于testing),它在开发人员机器上运行,而不是在服务器上运行。 它看起来像是如果我们可以得到这些位置标签在服务器上工作一切都会工作,有什么build议吗?

在新的浏览器窗口中打开源文件的完整URL(… ScriptResource.axd …)。 你应该看到一些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组件的中心位置。 您可以将单个文件System.Web.Extensions.dll放到您的bin目录中,而无需安装msi,但仍然需要web.config文件中的正确设置。 网站ajax.asp.net有大量关于这一切的信息。

这听起来像您可能会错过服务器上的组件,或者Web本身未正确configuration为使用ASP.NET Ajax组件。 也许开发人员使用另一个库,如Ajax.NET工具包,它需要安装在服务器上?

好吧,这个问题有两个部分和两个解决scheme:

第一:由于/ScriptResource.axd和/WebResource.axd在网站的一部分,然后redirect到login页面(表单身份validation),然后没有得到所需的JavaScript返回,系统是未定义的发生从这些文件。

第二:一旦添加了标签以使这些项目被看到,就发现匿名访问被禁用,并且看起来标签工作匿名访问必须被启用。

要debugging这个,我会尝试使用FiddlerTool ,看看你的页面试图加载的所有资源(ScriptResource.axd和WebResource.axd)的确切响应是什么。 在GAC中可能会有一些版本与assids的冲突。

还有一些其他的post/讨论这个问题,也许有一个解决scheme给你:

  • StackOverflow:Sys是未定义的
  • 揭秘“系统未定义”

我有这个问题。 WebResource.axd找不到WebForms.js(embedded在System.Web.dll中)。

我修复了服务器上的ASP.NET xx框架安装,并在此之后工作。

我遇到了同样的问题,并将缺less的WebForm_Autofocus代码跟踪到web.config中的一个选项。 当这个选项被删除/注释掉了所有的工作,并为所有剩余的脚本函数生成了js脚本。

这似乎是一个web.config问题,可能需要微软解决。 我正在使用VS 2010,版本10.0.40210.1 SPIRel,代码定位.Net 4.0。 当这个选项处于活动状态时,我还没有想出杀死JS代的底层进程。