如何调试与(缺少)回发相关的问题

时间:2010-10-25 06:31:49

标签: c# asp.net postback

我创建了一个自定义向导控件,可以在您进行操作时动态加载用户控件。该向导在我测试的所有环境(PC / MAC)和浏览器中都表现得如预期,但是客户端报告她无法完成向导。我对这个问题的了解:

  • 对于此用户(不是第一步),它始终在同一向导步骤中失败
  • 当用户点击步骤中的“下一步”按钮时,控制器会报告该请求不是回发请求(即IsPostBack()== false)并显示向导的第一页
  • 客户端正在使用Mac并使用最新版本的Safari
  • 访问该网站
  • 如果客户端切换到Firefox,或者甚至只是将Safari中的用户代理切换到Safari之外的其他东西,问题就会消失。

所以问题是,当客户端到达向导中的某个步骤并单击“下一步”时,控制器只是显示向导的第一步,而不是重新加载该步骤以启动保存事件。 / p>

失败的步骤包含许多不同的表单控件,包括文本框,下拉列表,复选框和文件上载控件。我们认为它可能与从Word或类似的东西粘贴的无效字符有关但看起来很奇怪,因为问题似乎只发生在Safari中。

不会抛出任何异常,并且Windows事件日志未显示任何相关的错误/警告。

我正在寻找的是诊断此错误的方法。目前我无法重现客户端正在经历的行为,但在进入现场并亲眼看到它后,我可以验证它肯定是一个有效的问题。

更新26/10/2010:

我们在客户端NIC上安装了proxy,以便检索请求和响应。问题是,当运行代理时,客户端似乎不再有问题了。这种行为对任何人都有意义吗?

更新27/10/2010:

在调查客户端计算机上的流量后,我们注意到响应标头包含了一些与客户端代理相关的条目,我们确认它们实际上是在办公室中运行squid代理。为了排除它与问题有关,我们让它们关闭然后再次尝试向导。这次没遇到任何问题!所以代理似乎干扰了导致.NET以某种方式将POST请求记录为非回发的请求。在失败的请求的响应头中找到以下行。任何人都可以评论鱿鱼如何引起我们正在经历的行为以及我们可以做些什么呢?

  

Via:1.0 squid-12(squid / 3.1.0.13),1.0 ClientSiteProxy:3128(squid / 2.7.STABLE4)

     

X-Cache:来自squid-12的MISS,来自ClientSiteProxy的MISS

     

X-Cache-Lookup:来自ClientSiteProxy的MISS:3128

3 个答案:

答案 0 :(得分:1)

如果我必须解决这个问题,我首先会在客户端上找一个小提琴手(www.fiddlertool.com)并查看请求的内容。我不确定Fiddler是否适用于Mac,但任何HTTP Watch,网络监视器工具都应该是好的。我不怀疑代码的原因是它在所有其他浏览器上都运行良好,所以代码应该不错。

可能是代码中有些东西[比如添加Cookie等]会弄乱特定客户端的浏览器。

HTH, 拉胡

答案 1 :(得分:1)

对于Mac有一个HTTPScoop可以让你调试http post数据....它类似于fiddler

答案 2 :(得分:0)

问题并没有解决,但我们最终只是在客户端squid代理中添加一个例外以绕过我们的网站。问题似乎与代理/ IIS / Safari相关,但我们无法进一步跟踪问题,只要问题没有在其他地方重现,客户对此解决方案感到满意。如果有更多信息表面,我会重新发布。