在使用 Django 1.2.3、PyISAPIe v1.1.0-rc4 和 IIS 7.5 时,我遇到了大型 POST 数据(>16384 字节)的问题。
例如,当提交大约。使用 POST 的 60kB 表单数据,会发生以下情况:
- POST 数据的前 16kB 块是正确的
- 下一个 16kB 块是第一个块的重复
- 下一个 16kB 是第一个块的另一个重复
- 其余的(<16kB)再次正确
有趣的是,使用 时content-type="multipart/form-data"
,它工作正常。
使用此信息,我在 django\core\handlers\wsgi.py 中将错误的可能位置追踪到 WSGIRequest._get_raw_post_data,它处理content-type="multipart/form-data"
与默认(无内容类型)情况分开的情况。
这两种情况都从self.environ['wsgi.input']
设置为 PyISAPIe 对象的 中读取。不同之处在于默认情况下似乎以 16kB 的块读取,而多部分处理程序似乎以不到 2GB 的块读取。
我对 C 和 C 语言的 Python 接口知之甚少,无法进一步深入研究,但我猜这个 bug 可能在 PyISAPIe 中 ReadWrite.cpp 的 ReadClient 函数中的某个地方。
我目前的解决方法是添加content-type="multipart/form-data"
到可能产生超过 16kB 数据的表单中。
是否有人也遇到过这种情况,或者有人知道如何确定该错误是否确实存在于 PyISAPIe 中?
谢谢!