У меня проблема с большими данными POST (> 16384 байта) при использовании Django 1.2.3, PyISAPIe v1.1.0-rc4 и IIS 7.5.
Например, при подаче ок. 60 КБ данных формы с использованием POST, происходит следующее:
- Первый 16-килобайтный блок данных POST верен
- Следующий блок 16 КБ является повторением первого блока
- Следующие 16 КБ - это еще одно повторение первого блока
- Остальное (<16 кБ) снова верно </li>
Интересно то, что при использовании content-type="multipart/form-data"
он работает нормально.
Используя эту информацию, я отследил вероятное местоположение ошибки до WSGIRequest._get_raw_post_data в django \ core \ handlers \ wsgi.py, который обрабатывает content-type="multipart/form-data"
отдельно от случая по умолчанию (без содержимого).
Оба случая читаются из self.environ['wsgi.input']
, для которого задан объект PyISAPIe. Разница в том, что регистр по умолчанию, кажется, читается в блоках по 16 КБ, тогда как многочастный обработчик, кажется, читает в блоках чуть менее 2 ГБ.
Я недостаточно знаю о C и интерфейсе Python для C, чтобы копать дальше, но я предполагаю, что ошибка где-то в PyISAPIe в функции ReadClient в ReadWrite.cpp.
Мой текущий обходной путь - добавить content-type="multipart/form-data"
к формам, которые могут содержать более 16 КБ данных.
Кто-нибудь тоже сталкивался с этим, или кто-нибудь знает, как определить, действительно ли ошибка в PyISAPIe?
Спасибо!