Назад | Перейти на главную страницу

IIS 7.5 в Windows 7 периодически зависает с запросами POST от python / php

Я пытаюсь отследить очень странную ошибку с 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, но, поскольку у меня нет версии интернет-безопасности, я предположил, что это не повлияет. Я очень сожалею об этом предположении!