100K大小的POST请求无法访问webAPI?

时间:2017-01-02 07:56:13

标签: c# asp.net iis asp.net-web-api iis-6

我正在使用Fiddler(或帖子管理员)来调用我的WebApi请求。 (它作为IIS中的ASP.net应用程序托管)

这是服务:

    [HttpPost]
    [ActionName("uploadRessources")]
    [AllowAnonymous]
    public HttpResponseMessage uploadRessources(ResourcesJson json)
    {
      ...
        return Request.CreateResponse(HttpStatusCode.OK, result);
    }

对于短长度正文(3行数据)长度发布数据请求,如:

POST http://something.com/api/services/uploadRessources HTTP/1.1
Cache-Control: no-cache
Connection: keep-alive
Pragma: no-cache
Accept: application/json
Accept-Encoding: gzip
Accept-Language: he-IL
User-Agent: Mozilla/5.0
Content-Length: 451
Content-Type: application/json
Host: es.com

{ "l":
[{"MasterEntity":2,"screen":"ConfirmHealthDetailsPage","Lbl":"ApproveTheFollowingDetails","enus":"Approve the Following Details:","device":"mobile","description":"NULL"},
{"MasterEntity":2,"screen":"ConfirmHealthDetailsPage","Lbl":"PersonalDetails","enus":"Personal Details","device":"mobile","description":"NULL"},
{"MasterEntity":2,"screen":"FingerPrintResources","Lbl":"CANCEL","enus":"CANCEL","device":"mobile","description":"NULL"}]
 }

我得到了成功的回复:

HTTP/1.1 200 OK

但是对于长身长请求(101K) -

enter image description here

它被卡住了(它甚至没有在我的代码中遇到断点,而在短暂的请求中 - 确实如此)并且我从未看到过响应:

enter image description here

顺便说一句 - 如果以后我再次​​运行短体长请求(同时仍在等待之前的大量请求) - 我确实得到200(对于短长度请求)。

在web.config中我确实设置了:

<httpRuntime enableVersionHeader="false" executionTimeout="100000000" maxRequestLength="999999999" />

在IIS中:没有请求过滤器
在事件查看器中 - 我没有看到任何异常或警告 IIS版本:6.1(Windows 7) - 但它也发生在我们的服务器上。

问题

为什么我的101k长度请求没有 - 到我的webapi?

修改

我发现它发生在&gt; 65k请求中。还是不知道是什么问题

2 个答案:

答案 0 :(得分:0)

这似乎是你的序列化程序的一个问题,试图在那里放一个断点,看看是否点击它。如果您没有使用自定义序列化程序,请暂时创建一个,以查看您的请求会发生什么。

答案 1 :(得分:0)

它被卡在request.Content.ReadAsStringAsync().Result上(并且从未被释放)。奇怪但将其设置为异步,解决了问题。我还是不知道为什么。 In General this is the solution - 左侧窗格是有问题的,而右侧窗格是工作窗格。 (我必须说左侧窗格曾经工作,但升级到4.6.2后 - 它开始出现问题) - 再次 - 我不知道为什么