我试图在Windows 7上跟踪IIS 7.5的一个非常奇怪的错误。首先,这是一些上下文。
我有一个非常简单的ASP.NET Web应用程序与以下代码:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration> <%@ Page Language="C#" Inherits="_Default" CodeFile="default.aspx.cs" %> <html> <body> <h1><asp:literal runat="server" id="litHeading1" /></h1> <form runat="server"> <asp:TextBox id="tbInput" runat="server" /> <asp:Button id="btnSubmit" Text="Submit" runat="server" /> </form> </body> </html> public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if( IsPostBack ) { litHeading1.Text = "Posted! Hi, " + tbInput.Text; } else { litHeading1.Text = "Get"; } } }
我也有一个非常简单的Python脚本来打这个页面并发布到它:
import requests as reqm url = 'http://localhost/testapp4.0/default.aspx' post_payload = { # post values don't seem to matter, having them or not having them # doesn't seem to affect the problem '__VIEWSTATE': r"/wEPDwUKMTU1MDMxMzU0MQ9kFgICAQ8WAh4EVGV4dAUDR2V0ZGShYB/fzaT/YSTSt7FPGhIQcCrp1GbI+eD2bLFl1qUxWA==", '__EVENTVALIDATION': r"/wEWAwLT5c/kDALpouS8DQLCi9reA+DdtetcF6QuZcTZOdNPIJzwWkvX+ITpSzlbXCsWVizl", 'tbInput': 'fred', 'btnSubmit': 'Submit', } def doit(): req = reqm.post(url, data=post_payload) print(req.text) # if it doesn't show up in one run, bump value to # 500 or so for x in range(1): doit()
所以有什么问题?
问题是,IIS正在频繁地丢弃连接,但仅在执行POST操作时。 如果将脚本更改为使用GET操作,则不会看到任何问题。
示例IIS日志文件:
2012-11-28 00:48:57 ::1 POST /testapp4.0/default.aspx - 80 - ::1 python-requests/0.14.0+CPython/2.7.2+Windows/7 400 0 64 6767
示例IIS跟踪文件:
https://gist.github.com/4158347
示例来自Python请求的IIS HTTP.err:
2012-11-28 00:44:16 ::1%0 53528 ::1%0 80 HTTP/1.1 POST /testapp4.0/default.aspx - 1 Timer_EntityBody Classic+.NET+AppPool 2012-11-28 01:16:03 ::1%0 53928 ::1%0 80 HTTP/1.1 POST /testapp4.0/default.aspx - 1 Timer_EntityBody .NET+4.0
同上,但从一个失败的PHP请求:
2012-11-28 01:19:33 ::1%0 53942 ::1%0 80 - POST /testapp4.0/default.aspx - - Timer_HeaderWait -
我已经做了各种尝试和隔离的迭代
无论我尝试了什么,我都看到问题出现:
间歇性
parsing度:
限速?
我想知道这是否可能是在Windows 7上的IIS 7.5中的某种速度限制问题。我读它有一定的限制,因为它不在服务器操作系统上运行。 但是,这并不能解释为什么我在运行非常不频繁的请求时仍然会看到问题。
为什么这是一个问题?
我试图对WebForms .NET应用程序运行functiontesting。 正如你所想象的,经常掉线的连接正在对我的testing破坏!
我花了几天的时间解决这个问题,将非常感激的一些帮助!
哇,刚做了另一个谷歌search,遇到一个提到AVG的家伙。 一个灯熄灭,我彻底禁用了我的AVG,问题消失了。 进一步的testing显示问题与LinkScannerfunction。
我很早就考虑过AVG,但由于我没有互联网安全版本,所以我认为它不会有影响。 我非常后悔这个假设!