IIS 8.5使用JSON数据切断HTTP-POST到web api

时间:2015-12-14 20:28:05

标签: c# asp.net json iis

我在WinSrv 2012 R2和IIS 8.5上托管ASP.NET Web Api。

web api在控制器中有一个动作,它接收一个json对象 - 为了讨论,它看起来像这样:

[HttpPost, "api/action"]
ResponseModel GetIt(RequestModel requestData)

除非我尝试发布大的数据,否则效果很好。例如,当我尝试发布8Mb的json(它包括base64编码的图像文件)。

它如何失败是相当有趣的。基本上,操作被调用但模型(RequestModel)缺少某些键属性。让我相信,反序列化对象时会出现错误,但我不会这样做。看到了。我的Web API操作立即引发异常,因为它获取了一些键空值。

我在IIS中启用了FailedRequestTracking,我看到以下内容:

  

请求包含以下标题:

     
      
  • 缓存控制:无存储,无缓存
  •   
  • 连接:Keep-Alive
  •   
  • 内容长度:12262199
  •   
  • Content-Type:application / json;字符集= UTF-8
  •   
  • 接受:application / json
  •   
  • 期待:100-continue
  •   

在这种情况下,对象是~12MB。各种处理程序匹配开始,最终IIS在ManagedPipelineHandler上结算以处理请求。它读取16,384个字节,然后再次读取16,384个字节,最后一次读取16,384个字节,您将看到NOTIFY_MODULE_COMPLETION条目。

我看到AspNetHttpHandlerEnter事件,在设置响应标头后,我看到了异常的500错误。 MODULE_SET_RESPONSE_ERROR_STATUS

有谁知道为什么ManagedPipelineHandler只读48K?我需要能够发布高达25Mb的数据。

0 个答案:

没有答案