在我的 Azure Web 角色中,处理大于约 3000 万字节的 POST 请求时出现问题。我知道有 IIS 过滤器可以检测所有大于 3000 万字节的请求并将其结果设置为 404。但我希望这些 404 代码会显示在 IIS 日志中。
我的网络角色的一个用户面临以下行为:对我的网络角色中小于约 3000 万字节的特定 URL 的 POST 请求可以通过(我在 IIS 日志中看到它们)但 POST 请求大于那个(到相同的 URL)为客户端生成 HTTP 503(服务不可用)代码,我在 IIS 日志中看不到这些请求。
这是一个示例长 POST 的标题
POST /mySpecificUrl?paramshere HTTP/1.1
User-Agent: Custom USer Agent
Content-Type: application/octet-stream
Proxy-Authorization: NTLM LongBase64StringHere
Host: my.hostname.here
Content-Length: content length here - about 32 megabytes
Expect: 100-continue
看起来有些东西正在拦截这些请求 - 也许是负载平衡器或其他东西,所以它们没有达到我的角色。
现在用户使用 Fiddler,他声称当他获得代码 503 时,将返回以下内容:
Hello,
A communication error occurred: ""
The Web Server may be down, too busy, or experiencing other
problems preventing it from responding to requests.
You may wish to try again at a later time.
制作为 HTML。此内容附带的标头不包含我们注入到每个响应中的自定义标头,因此这是请求未到达 IIS 的又一证据。
如何找出导致此行为的原因以及如何控制它(例如,更改请求大小阈值)?