1、本文介绍用于调试和解决。应用程序中问题的技术。中的一项功能,它允许页面自动保留状态,而无需依赖服务器状态(例如会话状态)。
2、但是,与相关的问题可能难以调试。在大多数情况下,当出现问题时,在浏览器中收到以下错误消息,几乎没有指示可能导致此问题的原因:。此页的无效,可能已损坏。
3、本文介绍一些可用于调试和解决问题的技术。在场中,每个客户端请求都可以在每次回发时转到不同的计算机。由于此行为文件中将属性设置为。
4、相反,必须将属性的值设置为由场上的所有计算机共享的固定字符串。动态编译文件时,文件会内置到具有随机名称(的程序集中,例如,文件名可能395如果运行的是场,则相同的文件将编译为具有不同随机名称的程序集。通常,这不是问题,因为没有人对这些程序集名称做出假设。
5、但是,如果使用二进制序列化将动态编译的类型放入,则程序集的名称将作为数据的一部分包括在内。当该视图状态稍后发送到场中的其他服务器时,无法反序列化该视图状态,因为它使用不同的程序集名称。最佳解决方法是避免使用二进制序列化。即使未遇到此问题,二进制序列化也会使用许多资源。
1、相反,请将在中输入的内容限制为数组、对、三元组和简单类型的组合,(例如字符串、和其他类型的)。和是视图状态引擎可以有效处理的简单包装器类型。
2、若要避免此问题,另一种解决方法是将存储在中的类型移动到文件夹或缓存中的预编译程序集中。此修补程序不会解决性能问题,但它可以保证程序集在所有计算机上具有相同的名称。计算机身份验证代码()功能的目的是使客户端无法发送包含恶意的请求。默认情况下。
3、文件中的以下标志中启用。要确定所处理的问题是否与功能相关,最简单的方法是关闭该功能。为此文件中的标志更改为以下代码。如果不再收到错误,则问题与功能有关。
4、如果关闭功能,然后对不进行编码的控件使用(例如标签控件),则攻击者可能会篡改数据,并将任意数据置于中。此任意数据将解码,然后由控件在呈现已发布页面时使用。因此,除非你努力防止攻击,否则攻击者可以将脚本注入应用程序。
5、例如,攻击者可以解码数据,将脚本注入到控件所在的数据中,然后从网站链接到该数据。单击该链接的任何人都将成为脚本注入攻击的受害者,该攻击可能会窃取其身份验证或会话。