Я пытаюсь отследить очень странную ошибку с IIS 7.5 в Windows 7. Во-первых, вот некоторый контекст.
У меня очень простое веб-приложение ASP.NET со следующим кодом:
<?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
Пример IIS HTTP.err из запросов Python:
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 -
Итерации, которые я сделал для разных вещей, чтобы попытаться изолировать
Я видел, что проблема проявляется независимо от того, что я пробовал:
Прерывистый характер
Разрешение:
Ограничение скорости?
Мне интересно, может ли это быть какой-то проблемой ограничения скорости в IIS 7.5 в Windows 7. Я читал, что у него есть определенные ограничения, поскольку он не работает в серверной ОС. Однако это не объясняет, почему я все еще вижу проблему, когда выполняю очень нечастые запросы.
Почему это проблема?
Я пытаюсь запустить функциональные тесты для приложения WebForms .NET. Как вы понимаете, частые обрывы соединений портят мое тестирование!
Я потратил несколько дней на устранение неполадок и был бы очень благодарен за помощь!
WOW !, только что сделал еще один поиск в Google и наткнулся на парня, который упомянул AVG. Индикатор погас, и я полностью отключил свой AVG, и проблема исчезла. Дальнейшее тестирование показало, что проблема связана с функциональностью LinkScanner.
Я заранее рассматривал AVG, но, поскольку у меня нет версии интернет-безопасности, я предположил, что это не повлияет. Я очень сожалею об этом предположении!