仅生产服务器上的 Javascript 错误?

Chr*_*Dog 6 iis-7 asp.net javascript web.config

我正在从开发到生产发布几个 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"> 
Run Code Online (Sandbox Code Playgroud)

错误与上述相同,但使用 WebResource.axd 而不是 ScriptResource.axd - 其中 2 个

然后两个似乎是真正的原因?

Sys is not defined
Run Code Online (Sandbox Code Playgroud)

WebForm_AutoFocus is not defined
Run Code Online (Sandbox Code Playgroud)

----------------- 附录 --------------------

根据建议,我查看了 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>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这也没有解决问题。是否有一些设置/配置选项会阻止位置标签工作?我们为应用程序中的页面添加了相同的标签(以进行测试),它适用于开发人员的机器,但不适用于服务器。看起来如果我们能让这些位置标签在服务器上工作,一切都会好起来的,有什么建议吗?

Chr*_*Dog 1

好的,这个问题有两个部分和两个解决方案:

首先:系统未定义是由于 /ScriptResource.axd 和 /WebResource.axd 位于网站的一部分,然后重定向到登录页面(表单身份验证),然后无法获取所需的 javascript从那些文件中。

其次:添加标签以使这些项目可见后,我们发现匿名访问已被禁用,并且似乎必须启用匿名访问才能使标签正常工作。