IIS重复执行请求

哋岼線 2014-07-07 02:20:27
最近项目经常出现 Client端(web,android,j2me)发送一次请求,后台执行2次(有时更多次)请求,导致数据重复问题
有没有哪位遇到过同样的问题.
Windows server 2008+IIS7.0

apache服务器有如下设置
JkWorkerProperty worker.local.socket_timeout=30
JkWorkerProperty worker.local.retries=1
不知道IIS是否有类似的配置
...全文
815 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanjundong 2018-05-11
  • 打赏
  • 举报
回复
我的服务器也是,肯定的是用户只提交一次,但是数据建立的时间是20秒左右,这个肯定是服务器问题,但是又不知道哪里问题!~windows2012 r2版64位
lujianjian 2016-04-06
  • 打赏
  • 举报
回复
各位大侠,最后是怎么解决的呢?
hxlailfh 2015-12-28
  • 打赏
  • 举报
回复
楼主 我想问一下 你这个 重复提交的问题是专门解决的啊!
哋岼線 2014-07-22
  • 打赏
  • 举报
回复
引用 33 楼 qhguan 的回复:
我也遇到这个问题,但我的服务器是 win 2008 ,IIS 7 之前都没事的,最近一提交请求,数据库就插两次数据
有查出 是Client端重复发送请求吗?
Mic无限可能 2014-07-17
  • 打赏
  • 举报
回复
我也遇到这个问题,但我的服务器是 win 2008 ,IIS 7 之前都没事的,最近一提交请求,数据库就插两次数据
哋岼線 2014-07-12
  • 打赏
  • 举报
回复
引用 31 楼 dongxinxi 的回复:
如果只发送并且也只接收到一个,那么肯定是程序有问题了
发送了2个,接收了2个 一个是我调用发送的,另一个是因为超时自动发送的
  • 打赏
  • 举报
回复
如果只发送并且也只接收到一个,那么肯定是程序有问题了
  • 打赏
  • 举报
回复
很简单,确定两点: 1.通过httpwatch之类的抓包工具看一下发送了几个请求 2.通过webServer的日志查一下请求发送时间对应的URL有收到几次请求(tomcat或者IIS都有日志)
一切为了你 2014-07-11
  • 打赏
  • 举报
回复
我的问题 是img 标签 动态赋 url 就会请求2次 求答案啊 网上说开始不写src 也不行啊
哋岼線 2014-07-11
  • 打赏
  • 举报
回复
引用 26 楼 skydemo 的回复:
[quote=引用 20 楼 Roy_se7en 的回复:] [quote=引用 18 楼 sp1234 的回复:] [quote=引用 12 楼 Roy_se7en 的回复:] 没有用什么其他的,就是简单的ajax post请求,首先排除客户端点击按钮多下的情况,不知道还有其他什么原因吗? 当然大部分时间还是正常的,请求一次响应一次,只是偶尔服务器资源不足,或者网络差的时候才会出现服务器接到多次请求的问题,再提供一个信息IIS日志中有出现 sc-status sc-substatus sc-win32-status time-taken 200 0 64 453150 这种就经常会接到重复请求,这个64和 time-taken值比较大
”接到重复请求“?到底是客户端仅请求1次,还是多次? 如果是客户端请求了多次,你纠结服务器端就没有意义了![/quote] 之前一直在找原因,现在基本可以确定是客户端发了重复请求[/quote] 我也遇到这样的问题了, 我在本地测试都是没问题的,在服务器环境中除开ie意外的浏览器 都是执行了2次后台方法!![/quote] 是偶尔出现还是一直出现。现在又什么解决方案吗
哋岼線 2014-07-11
  • 打赏
  • 举报
回复
引用 25 楼 jaylongli 的回复:
楼主很负责人的告诉你,IIS不会自己提交多次,一般是代码原因或者客户端请求的
已经确定问题出在客户端了,只是还没有找到解决方法
一切为了你 2014-07-11
  • 打赏
  • 举报
回复
引用 20 楼 Roy_se7en 的回复:
[quote=引用 18 楼 sp1234 的回复:] [quote=引用 12 楼 Roy_se7en 的回复:] 没有用什么其他的,就是简单的ajax post请求,首先排除客户端点击按钮多下的情况,不知道还有其他什么原因吗? 当然大部分时间还是正常的,请求一次响应一次,只是偶尔服务器资源不足,或者网络差的时候才会出现服务器接到多次请求的问题,再提供一个信息IIS日志中有出现 sc-status sc-substatus sc-win32-status time-taken 200 0 64 453150 这种就经常会接到重复请求,这个64和 time-taken值比较大
”接到重复请求“?到底是客户端仅请求1次,还是多次? 如果是客户端请求了多次,你纠结服务器端就没有意义了![/quote] 之前一直在找原因,现在基本可以确定是客户端发了重复请求[/quote] 我也遇到这样的问题了, 我在本地测试都是没问题的,在服务器环境中除开ie意外的浏览器 都是执行了2次后台方法!!
於黾 2014-07-10
  • 打赏
  • 举报
回复
网络差的话,点击页面无响应,客户端是否会做错误重发判断? Android端是你自己开发的客户端,还是仅仅用了自带的浏览器?
哋岼線 2014-07-10
  • 打赏
  • 举报
回复
引用 18 楼 sp1234 的回复:
[quote=引用 12 楼 Roy_se7en 的回复:] 没有用什么其他的,就是简单的ajax post请求,首先排除客户端点击按钮多下的情况,不知道还有其他什么原因吗? 当然大部分时间还是正常的,请求一次响应一次,只是偶尔服务器资源不足,或者网络差的时候才会出现服务器接到多次请求的问题,再提供一个信息IIS日志中有出现 sc-status sc-substatus sc-win32-status time-taken 200 0 64 453150 这种就经常会接到重复请求,这个64和 time-taken值比较大
”接到重复请求“?到底是客户端仅请求1次,还是多次? 如果是客户端请求了多次,你纠结服务器端就没有意义了![/quote] http://wenku.baidu.com/link?url=q_nrKoNNis8bTWNbcopGO0YGzmTKfZG_JVboTvSxg5dWfVaOp_W-lLlagVeNmsgSJAsZL_0dy_vKGRFlEPKUR5W2VfdLl6Sodhhtw1pRsmG 有人说是java jdk 1.4.2的bug,可是我用的是1.6
哋岼線 2014-07-10
  • 打赏
  • 举报
回复
引用 18 楼 sp1234 的回复:
[quote=引用 12 楼 Roy_se7en 的回复:] 没有用什么其他的,就是简单的ajax post请求,首先排除客户端点击按钮多下的情况,不知道还有其他什么原因吗? 当然大部分时间还是正常的,请求一次响应一次,只是偶尔服务器资源不足,或者网络差的时候才会出现服务器接到多次请求的问题,再提供一个信息IIS日志中有出现 sc-status sc-substatus sc-win32-status time-taken 200 0 64 453150 这种就经常会接到重复请求,这个64和 time-taken值比较大
”接到重复请求“?到底是客户端仅请求1次,还是多次? 如果是客户端请求了多次,你纠结服务器端就没有意义了![/quote] 之前一直在找原因,现在基本可以确定是客户端发了重复请求
哋岼線 2014-07-10
  • 打赏
  • 举报
回复
引用 17 楼 sp1234 的回复:
[quote=引用 4 楼 Roy_se7en 的回复:] [quote=引用 2 楼 guanlianwei 的回复:] 那怎么能执行多次,你怎么发送的,鼠标有没连键情况
客户端确定只有提交一次。后台有作重复执行的控制。现在就是想知道重复请求哪里来的、?[/quote] 你应该在web服务器端比较底层的部分进行跟踪或者说日志,确定它收到了1次还是2次请求。[/quote] 2014-07-09 06:42:30 192.168.10.99 POST /xx.mobile - 8090 - 192.168.10.180 Dalvik/1.6.0+(Linux;+U;+Android+4.3;+SM-N9008+Build/JSS15J) 200 0 64 315027 2014-07-09 06:42:32 192.168.10.99 POST /xx.mobile - 8090 - 192.168.10.180 Dalvik/1.6.0+(Linux;+U;+Android+4.3;+SM-N9008+Build/JSS15J) 200 0 0 17384 以上是IIS的日志,有接到2次请求
  • 打赏
  • 举报
回复
引用 12 楼 Roy_se7en 的回复:
没有用什么其他的,就是简单的ajax post请求,首先排除客户端点击按钮多下的情况,不知道还有其他什么原因吗? 当然大部分时间还是正常的,请求一次响应一次,只是偶尔服务器资源不足,或者网络差的时候才会出现服务器接到多次请求的问题,再提供一个信息IIS日志中有出现 sc-status sc-substatus sc-win32-status time-taken 200 0 64 453150 这种就经常会接到重复请求,这个64和 time-taken值比较大
”接到重复请求“?到底是客户端仅请求1次,还是多次? 如果是客户端请求了多次,你纠结服务器端就没有意义了!
  • 打赏
  • 举报
回复
引用 4 楼 Roy_se7en 的回复:
[quote=引用 2 楼 guanlianwei 的回复:] 那怎么能执行多次,你怎么发送的,鼠标有没连键情况
客户端确定只有提交一次。后台有作重复执行的控制。现在就是想知道重复请求哪里来的、?[/quote] 你应该在web服务器端比较底层的部分进行跟踪或者说日志,确定它收到了1次还是2次请求。
哋岼線 2014-07-10
  • 打赏
  • 举报
回复
引用 15 楼 zhanxueguang 的回复:
没代码,不幸福!!!
URL url = null; HttpURLConnection conn = null; String result = ""; try { String sParam = "&m=" + methodName; if (vector != null) { for (int i = 0; i < vector.size(); i++) { sParam += "&p" + String.valueOf(i) + "=" + vector.elementAt(i).toString(); } } byte[] data = sParam.getBytes(); url = new URL(realURL.replace("xx.mobile", methodName+".mobile")); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(CONNECT_TIMEOUT); conn.setReadTimeout(READ_TIMEOUT); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestMethod(METHOD_POST); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Content-Length", String.valueOf(data.length)); conn.setRequestProperty("Charset", "utf-8"); conn.setUseCaches(false); //conn.setRequestProperty("Retry-After", "10"); CommonData.writeLog(methodName+"; "+sParam); OutputStream outStream = conn.getOutputStream(); outStream.write(data); outStream.flush(); outStream.close(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) // ResponseCode:200 { InputStream inStream = conn.getInputStream(); //int contentLen = conn.getContentLength(); result = readInputStream(inStream,1024); inStream.close(); } else { result = "500"; //server error } } catch (ConnectTimeoutException e) { // TODO: handle exception CommonData.Log("ConnectTimeoutException"); throw new MyException(HTTP_RESULT_CONNECT_TIMEOUT); } catch (SocketTimeoutException e) { // TODO: handle exception CommonData.Log("SocketTimeoutException"); throw new MyException(HTTP_RESULT_READ_TIMEOUT); } catch (Exception e) { // TODO: handle exception CommonData.Log(e.getLocalizedMessage()); throw new MyException(HTTP_RESULT_EXCEPTION); } finally { conn.disconnect(); }
Rajesh_James 2014-07-10
  • 打赏
  • 举报
回复
没代码,不幸福!!!
加载更多回复(17)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧