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

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

你能在这个错误上获得完整的堆栈跟踪吗? 服务器事件日志中会有一个(系统或应用程序,不记得哪个)?

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

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

还有很多其他原因(例如上面提到的不正确的uris或querystrings被破坏),但是拥有完整的堆栈跟踪将有助于此处。

最后的错误是由于某些URL重写而导致管理员没有告诉我们的服务器。 注意那一个

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

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

  

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

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