让IIS 7能够接收大数据HTTP流的处理

今天发现一个vendor没办法通过AS2给我们送EDI 832/846文件,去IIS log中查了下都是HTTP 404.13错误,看来是HTTP request数据超长了(vendor给的832/846基本都是60MB左右的),日志如下:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2011-10-04 00:00:01

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken 

2011-10-04 05:28:56 172.16.70.45 POST /EdiIntReceive/ - 8004 - 172.16.72.140 haboob/5.5.2.0.8+build-3181 404 13 0 62 

 

以前配过IIS 6.0的,记得是改web.config就可以了,但IIS 7.0还没搞过,有点摸不着地方,试过web.config加<httpRuntime>节点但也没起作用。Google了一下终于找到了方法,而且很简单,找到虚拟目录属性中的Request Filtering选项,按照图中以下步骤,将maximum allowed content length设置大一点,比如到100 MB, 这样就能够接收大于默认值30000000 Bytes的http流了。

 

 让IIS 7能够接收大数据HTTP流的处理 

 

让IIS 7能够接收大数据HTTP流的处理 

 

让IIS 7能够接收大数据HTTP流的处理 

 

 以上solution是针对接收端的,实际上作为AS2发送端的vendor也可以通过一点小的配置修改就能够来搞定问题,只需要将HTTP request改为chunked encoding,也就是分包来发送数据就可以了,比较以下两个HTTP header就能够说明问题

 

Non-chunked encoding 

Connection: Keep-Alive

Content-Length: 58738800

Content-Type: APPLICATION/EDI-X12

 

 

chunked encoding 

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: APPLICATION/EDI-X12 

 

 

在Biztalk server中,可以在send port上这样设置来打开chunked encoding: 

 让IIS 7能够接收大数据HTTP流的处理

 

记下来,怕以后忘记了~ 

 

你可能感兴趣的:(http)