【发布时间】:2013-07-29 14:03:50
【问题描述】:
在我的 Azure Web 角色中,处理大于约 3000 万字节的 POST 请求时出现问题。我知道有 IIS 过滤器可以检测所有大于 3000 万字节的请求并将其结果设置为 404。但我希望这些 404 代码会显示在 IIS 日志中。
我的 Web 角色的一个用户面临以下行为:对我的 Web 角色中小于约 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 的又一证据。
如何找出导致此行为的原因以及如何控制它(例如,更改请求大小阈值)?
【问题讨论】:
-
尝试伪造
Content-Length标头并查看是否将条目添加到失败的请求日志中。 -
你发布的内容是异步的吗?
-
@ThiagoCustodio:这是另一个用户代码,但他使用我们的示例,其中 POST 是同步的,所以我猜除非他用棒球棒调整它,否则它是同步的。
-
@sharptooth 你可以在这里发布你的示例帖子吗?
-
@ThiagoCustodio:我已经添加了标题。
标签: iis azure azure-web-roles