System.Web.HttpException:这是一个无效的脚本资源请求

时间:2009-07-08 08:25:45

标签: c# asp.net

在将我们的网站推送到我们的客户端生产服务器时出现此错误,但该页面在其开发/测试服务器上运行正常。导致此错误的原因(考虑到我自己没有使用任何Web资源,但我使用的是asp.net ajax工具包)。

5 个答案:

答案 0 :(得分:11)

您是否可以获得有关此错误的完整堆栈跟踪?服务器事件日志中会有一个(系统或应用程序,不记得哪个)?

ASP.NET的各个部分都使用脚本资源,至少有两个稍微模糊不清的原因导致它们失败,我想到了这种错误。

  1. 信不信由你,如果你的dll已经嵌入了资源,并且它们将来会发生这种情况会发生(如果你在英国编译dll然后立即将它们部署到美国网络服务器上你就会很好意识到这个问题!)。我不记得这显示的事件日志错误,但是我知道是否看到它 - 并且它不是立即显而易见的。
  2. 如果负载平衡器在多个服务器之间路由请求而不是“粘滞”,并且您的服务器具有不同的机器密钥,则请求将失败,因为标识资源的加密查询字符串将无法在另一台服务器上解密。这将导致堆栈跟踪,其中包含各种加密类型。
  3. 还有很多其他原因(例如上面提到的不正确的uris或querystrings被破坏),但是有一个完整的堆栈跟踪将有助于此。

答案 1 :(得分:3)

最终的错误是由于管理员没有告诉我们的服务器发生了一些URL重写。小心那个

答案 2 :(得分:2)

我以前一直都会遇到这个恼人的错误。用户确实受此错误的影响。我们曾经抱怨页面加载不正确。在尝试添加DOCTYPE等许多内容之后,错误并没有完全消失。然后我们尝试在会话中存储所有VIEWSTATE。 Violà没有更多的错误。如果您的应用程序具有像我们这样的膨胀视图状态,那么您将在日志中看到此错误。常。

答案 3 :(得分:1)

如果确实使用多台服务器,请尝试以下操作: 添加到您的web.config:

<machineKey  
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
               AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"           
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>

但是使用此处的代码示例自己生成validationKey和decryptionKey: http://msdn.microsoft.com/en-us/library/ms998288.aspx 上面的链接还解释了有关此解决方案的更多信息,请查看该页面,在该页面上查找 Web场部署注意事项

答案 4 :(得分:0)

您可以查看产生此错误的网址。 Web资源(由Ajax Toolkit使用)依赖于查询字符串参数。如果该参数以某种方式被更改(可能是由某个恶意用户),则HTTP处理程序将抛出异​​常,它无法找到所请求的Web资源。