我有一个在客户端服务器(W2016,.NET 4.5)上运行的ASP.NET应用程序。当我从我们的办公室访问其服务器上的页面之一时,该页面就会被点击一次。检查IIS日志(%SystemDrive%\inetpub\logs\LogFiles\W3SVC2
)显示该页面的GET,然后按一下页面上的按钮,日志文件显示POST。到目前为止,看来一切正常。
现在,当我远程访问客户端的网络并从其本地计算机之一访问该页面时,日志文件显示GET,然后按页面上的按钮,日志同时显示两个POST。第一个显示状态(sc-status, sc-substatus, sc-win32-status
) 200 0 64 ,第二个显示状态 200 0 0 。
在日志文件中,两个POST均相同。基本上日志看起来像这样(除了我屏蔽了一些数据):
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status
2009-08-11 20:19:32 x.x.x.x GET /File.aspx - 80 - y.y.y.y Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.0;+WOW64;+Trident/4.0;+SLCC1;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.21022;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30618;+MDDR;+OfficeLiveConnector.1.4;+OfficeLivePatch.0.0) 200 0 0
2009-08-11 20:19:45 x.x.x.x POST /File.aspx - 80 - y.y.y.y Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.0;+WOW64;+Trident/4.0;+SLCC1;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.21022;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30618;+MDDR;+OfficeLiveConnector.1.4;+OfficeLivePatch.0.0) 200 0 64
2009-08-11 20:19:45 x.x.x.x POST /File.aspx - 80 - y.y.y.y Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.0;+WOW64;+Trident/4.0;+SLCC1;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.21022;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30618;+MDDR;+OfficeLiveConnector.1.4;+OfficeLivePatch.0.0) 200 0 0
问题是,页面两次被点击。数据库对第一个请求执行一个操作,然后第二个请求检测到正在执行重复操作,并引发错误消息。用户认为他们的操作失败了,但实际上成功了。
我试图找到一些常见的东西,例如浏览器,操作系统,防火墙和...,但是它们什么都没有。
更新:仅在启用SSL时发生。