由于您的建议,此问题已得到解决。详情见底部。非常感谢您的帮助!
我们的 ASP.NET 网站可从多个特定且高度安全的国际位置访问。它一直运行良好,但我们添加了另一个客户端位置,该位置表现出非常奇怪的行为。
特别是,当用户输入搜索条件并单击搜索按钮时,结果列表返回空。它甚至不显示“返回的 0 个结果”文本,因此就像 Repeater 控件根本没有绑定一样。类似的行为出现在网站的其他部分(但不是全部)中。用户可以正常登录网站并显示他们的个人资料信息。
我已经使用与他们完全相同的凭据在本地登录了该站点,并且该站点从这里运行良好。我们已经仔细完成了这些步骤,所以我相信这不是用户问题。
我在第一次加载时将搜索结果绑定在搜索结果页面的Page_Load中(条件在查询字符串中)。IE
if (!IsPostBack) {
BindResults();
}
通过注释掉 BindResults() 方法调用,我可以在本地复制完全相同的行为。
有人知道 IsPostBack 的值是如何计算的吗?他们高度安全的防火墙设置是否有可能导致 IsPostBack 始终返回 true,即使它是来自另一个页面的重定向?这可能是一个转移注意力的问题,因为问题可能出在其他地方。它确实复制了结果。
我无法访问该站点,因此故障排除仅限于向他们提供说明并要求他们告诉我结果。
谢谢你的时间!
附加信息:客户端位于运行默认规则的 Microsoft ISA 2006 防火墙后面。该站点已添加到 Internet Explorer 受信任站点列表中,并在 FireFox 和 Google Chrome 中进行了尝试,所有结果都相同。
解决方案:对我来说,获胜者是使用 Fiddler 的建议。多么出色的工具,任何 Web 开发人员都不应该没有。使用它,我能够从请求中删除各种标头,直到我重现问题为止。实际上有两个因素导致了这个错误,就像这种令人困惑的问题经常发生的情况一样。
因素一——Web 应用程序尽可能使用所有主流浏览器都支持的 GZIP 压缩。防火墙正在剥离指定 GZIP 解压缩支持的标头(Accept-Encoding: gzip, deflate)。
因素二——我的代码中的一个错误意味着在发送未压缩的内容时绕过了某些处理。这个问题之前没有注意到,因为该应用程序被有限的受众使用,所有这些应用程序都支持 GZIP 解压缩。