由于您的建议,此问题已得到解决。有关详细信息,请参阅底部。非常感谢你的帮助!
我们的ASP.NET网站可从几个特定且高度安全的国际位置访问。它一直运行良好,但我们增加了另一个客户位置,表现出非常奇怪的行为。
特别是,当用户输入搜索条件并单击搜索按钮时,结果列表将返回空。它甚至没有显示'0结果返回'文本,因此就好像Repeater控件根本没有绑定。类似的行为出现在网站的其他部分,但不是全部。用户可以正常登录该站点并显示其配置文件信息。
我已使用与其完全相同的凭据在本地登录该站点,并且该站点在此处运行良好。我们已经仔细检查了这些步骤,因此我确信这不是用户问题。
我在第一次加载时将搜索结果绑定在搜索结果页面的Page_Load中(条件在查询字符串中)。即。
if (!IsPostBack) {
BindResults();
}
我可以通过注释掉BindResults()方法调用来在本地复制完全相同的行为。
有人知道如何计算IsPostBack的值吗?是否有可能他们高度安全的防火墙设置会导致IsPostBack始终返回true,即使它是从另一个页面重定向?这可能是一个红鲱鱼,因为问题可能在其他地方。它确实复制了结果。
我无权访问该网站,因此故障排除仅限于向他们提供说明并要求他们告诉我结果。
谢谢你的时间!
附加信息:客户端是运行默认规则的Microsoft ISA 2006防火墙的后面。该网站已添加到Internet Explorer受信任的网站列表中,并在FireFox和Google Chrome中试用,但结果相同。
解决方案:我的赢家是建议使用Fiddler。没有Web开发人员应该没有的优秀工具。使用这个我能够从请求中删除各种标题,直到我重现问题。实际上有两个因素导致了这个错误,因为这种混乱的问题经常发生。
因素1 - Web应用程序尽可能使用所有主流浏览器支持的GZIP压缩。防火墙正在剥离指定GZIP解压缩支持的头部(Accept-Encoding:gzip,deflate)。
因子2 - 我的代码中的错误意味着在未压缩发送内容时绕过了某些处理。之前没有注意到这个问题,因为应用程序被有限的受众使用,所有这些都支持GZIP解压缩。
答案 0 :(得分:3)
如果他们完全熟悉技术,我会让他们下载Fiddler或类似的东西,捕获整个HTTP会话,然后发送保存的会话。也许那里的东西会突然出现。
与此同时,看看您是否可以安装ISA Server(如果必须,可以安装评估版,或者如果您拥有或知道任何有子版的人,则可以安装评估版),看看是否可以在本地复制它。
答案 1 :(得分:1)
客户端是否可以禁用Javascript并且它没有获取_EVENTTARGET表单值?
答案 2 :(得分:1)
它可能是某种代理,它从给定的POST请求中创建GET请求......
我不确定如何计算IsPostBack,但我的猜测是它检查HTTP请求以查看它是POST还是GET ......
答案 3 :(得分:1)
我知道这一点,因为Ra-Ajax没有将任何这些参数传递给服务器,并且它们(Ra-ajax请求)被处理为IsPostBack请求......
答案 4 :(得分:1)
您是否可以创建一个测试帖子页面,该页面传递与搜索页面相同的内容,并在Page_Load中写回所有帖子以确保它们被传递,尤其是__VIEWSTATE。
foreach (string key in Request.Form)
{
Response.Write("<br>" + key + "=" + Request.Form[key]);
}
然后让其中一个用户转发他们在该测试页面上看到的内容。
编辑:有文档证明某些防火墙可以破坏VIEWSTATE以及一些解决它的方法:View State Overview
答案 5 :(得分:1)
位置,位置,位置。检查用户的文化。通常会导致问题。
答案 6 :(得分:1)
检查IIS日志以查看请求是否已将其发送到您的服务器。 ISA设置可能正在缓存初始请求并在后续请求中提供该请求。