IIS返回400 - 缺少内容错误

时间:2018-04-27 11:48:26

标签: asp.net debugging iis asp.net-web-api2 http-status-code-400

我在Windows Server 2012 R2上运行IIS 8.5版。该站点是通过HTTPS处理请求的API(TLS 1.2)。其中一个端点通过PUT(命令/动词)接受JSON序列化数据。数据可以成功传输到一定大小,大约8MB。对于大于此值的数据集,客户端会收到奇怪的HTTP错误:400 - Missing Content。我已在IIS服务器上启用了400错误的跟踪规则,并且可以在跟踪中的哪个位置看到400 - Missing Content响应被发回。但是,我无法破译之前事件中可能出现的问题。我只能注意到数据正在16299 bytes的块中读取多个轮次。然后突然读取的字节数减少了(12506 bytes),我们得到了这一系列事件:

1288.   NOTIFY_MODULE_COMPLETION    ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", fIsPostNotificationEvent="false", CompletionBytes="12506", ErrorCode="The operation completed successfully.
 (0x0)" 07:20:18.730
1289.   AspNetPipelineEnter Data1="System.Web.ImplicitAsyncPreloadModule"   07:20:18.730
1290.   AspNetPipelineLeave Data1="System.Web.ImplicitAsyncPreloadModule"   07:20:18.730
1291.   AspNetHttpHandlerEnter      07:20:18.730
1292.   GENERAL_SET_RESPONSE_HEADER HeaderName="Content-Length", HeaderValue="30", Replace="false"  07:20:19.043
1293.   GENERAL_SET_RESPONSE_HEADER HeaderName="Cache-Control", HeaderValue="private", Replace="true"   07:20:19.043
1294.   GENERAL_SET_RESPONSE_HEADER HeaderName="X-AspNet-Version", HeaderValue="4.0.30319", Replace="true"  07:20:19.043
1295.   MODULE_SET_RESPONSE_ERROR_STATUS
Warning ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="400", HttpReason="missing content", HttpSubStatus="0", ErrorCode="The operation completed successfully.
 (0x0)", ConfigExceptionInfo=""

我还启用了从IIS到客户端的详细错误响应,但是,返回的消息不包含任何有用的内容(只启用我已经完成的跟踪)。以下是有人想知道返回内容的片段:

<div class="content-container"> 
  <h3>HTTP Error 400.0 - missing content</h3> 
  <h4>Bad Request</h4> 
</div> 
<div class="content-container"> 
 <fieldset><h4>Most likely causes:</h4> 
  <ul>  <li></li> </ul> 
 </fieldset> 
</div> 
<div class="content-container"> 
 <fieldset><h4>Things you can try:</h4> 
  <ul>  <li>Create a tracing rule to track failed requests for this HTTP status code. For more information about creating a tracing rule for failed requests, click <a href="http://go.microsoft.com/fwlink/?LinkID=66439">here</a>. </li> </ul> 
 </fieldset> 
</div>

有谁知道这可能是什么原因?或者,我可以采用什么样的调试方法来获得对问题的更多见解?

1 个答案:

答案 0 :(得分:0)

重新检查已部署的IIS的配置后,很明显问题是由于请求可以设置的最大数据限制。因此,IIS配置的MaxRequestLength的{​​{1}}中存在错误(值太低)。

您可以在此处详细了解此媒体资源:https://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength(v=vs.110).aspx。实质上,金额(以千字节为单位的度量)决定了请求的最大大小。在上述情况下,当数据大小超过该字段设置的限制时,就会出现问题。