首页 新闻 搜索 专区 学院

Button点击后页面一直无响应或响应慢

0
悬赏园豆:200 [已解决问题] 解决于 2016-11-06 21:08

从前天开始, 后台登录页面 一点击登录按钮 页面就无响应或者响应很慢,后来专门测试了一下数据库没有问题, 前端页面中也没有引用第三方js或css, 后来专门新建一个aspx页面,放了个buttion, 后台写的点击事件很简单, 就是发个短信或者修改一下数据,时不时的就响应巨慢, 其他页面的 按钮点击后网页也很慢, 一直在打圈圈, 左下角一直显示 正在等待。。。的响应。 以前一直很好的, 啥事儿没有, 前天开始就不行了, 问下各位大神, 这是什么原因导致的啊, 我的程序不论本地还是服务器上都是一样点击按钮,响应很慢

比如下图的发送短信按钮,我点击按钮, 后台写了个点击事件, 其实手机号早就收到验证码了,但是页面一直是无响应状态

 

如若能帮忙解决, 微信红包大大的有

 

 

 

闲置的时光的主页 闲置的时光 | 初学一级 | 园豆:24
提问于:2016-11-04 23:07
< >
分享
最佳答案
1

先用你ie的这个network工具(fiddler,firebug都可)分析下网络耗时在哪。

如果是一直卡在等待响应,确认下你服务端此时的情况,比如在处理的代码中输出下整个处理耗时。确认下程序正常。

查看下系统日志中和iis, .net有关的信息,特别是错误。

 

收获园豆:60
Daniel Cai | 专家六级 |园豆:10424 | 2016-11-04 23:33

用network工具我也看了, 一片空白, 应该是响应都没有到达前台, 在服务器上我也打开系统的计数器看了,也没看懂, 一会儿我去程序写计时 看下执行时间 在global中写了个异常捕获 再看看

闲置的时光 | 园豆:24 (初学一级) | 2016-11-05 09:22
其他回答(4)
0

前端和网络没问题的,应该是服务端进入死循环或重定向循环或高频循环计算

收获园豆:45
Yu | 园豆:12980 (专家六级) | 2016-11-05 09:07

我把站点的其他页面都删掉了, 就留了一个两个测试页面,而且跳转我都写成了 后端输出一段js脚本,alert后进行js式的跳转,没有写response.redre..的这种跳转啊, 我记得如果我程序中写了死循环的话, 本地vs运行起来一会儿就会报黄页告诉你有死循环的错误, 现在的话我如何查看服务器死循环或者重定向死循环或者高频计算啊,我就留了几个页面,其他的都删了

现在最奇葩的是,有时候点击立刻响应, 有时候点击响应巨慢 

支持(0) 反对(0) 闲置的时光 | 园豆:24 (初学一级) | 2016-11-05 09:17

@闲置的时光: 你要先确定这个请求是能够一点击就到服务器的,而不是在外面游荡了几轮或好几轮才到服务器的,这个没问题后,那就是你程序或数据库的问题了,那就把ASP.NET整个生命周期的事件LOG给记录出来,看看哪步耗时

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2016-11-05 09:27

@Yu: 恩, 我在本地vs上调试的话 应该能确定一点击就能到达服务器吧, 这样就能排除程序在服务器上经过防火墙,负载,或其他网络原因等时候被拦截或者被阻塞了

支持(0) 反对(0) 闲置的时光 | 园豆:24 (初学一级) | 2016-11-05 13:07

@Yu:   我在一个页面点击提交按钮,然后F12, 看到的就是这个情况, 这个页面就一个pending中..

与此同时我打开B页面,() , B页面一直在加载中,页面都加载不出来

因为我在global中Application_BeginRequest(暂且叫A位置) 中和 B页面中PageLoad(暂且叫B位置)以及 B页面的一个点击事件中(暂且叫C位置) 加了日志记录, 所以我就去服务器上看了一下txt日志, 发现当我访问B页面的时候, 这个请求到达了A位置, 但是没有到达B位置, 也就是说请求到达了global,但没有到达页面的pageload,  接下来我就不知道该怎么办了

 

支持(0) 反对(0) 闲置的时光 | 园豆:24 (初学一级) | 2016-11-05 21:24
1

b本地服务器一样慢.你先打断点.在方法开始的地方.一步一步看哪里卡.基本上就是调用外部服务的问题

收获园豆:45
吴瑞祥 | 园豆:29369 (高人七级) | 2016-11-05 09:23

一旦有一个页面开始慢了,我在打开其他页面(即使是一个空页面) 打开也很慢, 很久也没有响应, 我打了断点执行一切正常

 

支持(0) 反对(0) 闲置的时光 | 园豆:24 (初学一级) | 2016-11-05 12:45

@闲置的时光: 你按下F12看下network.等待的是哪个请求.

支持(0) 反对(0) 吴瑞祥 | 园豆:29369 (高人七级) | 2016-11-05 18:31

@吴瑞祥: 我在一个页面点击提交按钮,然后F12, 看到的就是这个情况, 这个页面就一个pending中..

与此同时我打开B页面,() , B页面一直在加载中,页面都加载不出来

因为我在global中Application_BeginRequest(暂且叫A位置) 中和 B页面中PageLoad(暂且叫B位置)以及 B页面的一个点击事件中(暂且叫C位置) 加了日志记录, 所以我就去服务器上看了一下txt日志, 发现当我访问B页面的时候, 这个请求到达了A位置, 但是没有到达B位置, 也就是说请求到达了global,但没有到达页面的pageload,  接下来我就不知道该怎么办了

 

支持(0) 反对(0) 闲置的时光 | 园豆:24 (初学一级) | 2016-11-05 21:23
0

你把后端每个步骤耗时用日志文件记录下来,前端有些操作也可以将耗时输出到控制台查看。

收获园豆:50
CodeHsu | 园豆:5468 (大侠五级) | 2016-11-05 13:17

记录了, 发现请求无法到达页面的pageload中, 到达了global中的Application_BeginRequest中, 接下来我该怎么办

支持(0) 反对(0) 闲置的时光 | 园豆:24 (初学一级) | 2016-11-05 21:29

@闲置的时光: 做了过滤或者其他处理了没有,路由没有匹配?

支持(0) 反对(0) CodeHsu | 园豆:5468 (大侠五级) | 2016-11-05 21:49

@SeayXu: 做了过滤了,后来我就启动起程序来,不停地运行,不停地过断点,后来发现了问题了, 就做了些修改, 具体明天就能知道结果了

支持(0) 反对(0) 闲置的时光 | 园豆:24 (初学一级) | 2016-11-06 04:35
0

今天不停地调试, 终于在一个提交按钮事件上找到了突破口, 平时本地调试不能必现出问题来, 今天快速调试的时候刚好了一个地方卡了一下, 于是乎想到了底层有个日志记录(调用日志站点的接口), 发现对日志api 进行httpwebrequest请求的时候一直没有响应, 于是找到了问题, 主线程在这个地方被阻塞了一直等待响应, 所以其他请求无法达到pageload, 于是开始解决

1 把底层的操作日志请求全部改为队列(站点浏览量统计我都洗的对垒, 想不起来这个为什么当时没有写队列)

2. 把httpwebrequest的请求超时时间设短, 如果超时自动将此次请求的信息内容写本地txt文档(注意写之前判断下txt文档是否被占用)

3.在定时任务(Windows service)中新增一项, 定时检测log站点是否响应慢, 如果检测到响应慢或其他异常,短信或邮件通知到我

 

ps: 感谢回复我的大神们! 留下微信号或微信二维码, 我给你们发红包哈!

闲置的时光 | 园豆:24 (初学一级) | 2016-11-06 21:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册