100K大小的POST请求无法访问webAPI?
问题描述:
我使用提琴手(或邮政经理)来调用我的WebApi的请求。 (其托管为在IIS中ASP.net应用程序)100K大小的POST请求无法访问webAPI?
这是该服务:
[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) -
被卡住(它甚至不命中断点在我的代码,而在短的请求 - 它),我从来没有看到一个响应:
BTW - 如果以后我再次运行短体长请求(同时仍在等待以前的大量请求) - 我确实得到了200(针对短的请求)。
在web.config中我没有设置:
<httpRuntime enableVersionHeader="false" executionTimeout="100000000" maxRequestLength="999999999" />
在IIS:没有要求过滤器
在事件查看器 - 我看不出有任何异常或警告 IIS版本:6.1(Windows 7)中 - 但它也发生在我们的服务器上。
问题
为什么我的101K长度的要求 - 让我的WebAPI?
编辑
我发现,它发生了> 65000个请求。仍然不知道是什么问题
答
它卡在request.Content.ReadAsStringAsync().Result
(并且从未发布)。奇怪,但设置为异步,解决了这个问题。我仍然不知道为什么。 In General this is the solution - 左窗格是有问题的,而右窗格是工作窗格。 (我必须说,左窗格用于工作,但升级到4.6.2后 - 它开始出现问题) - 再次 - 我不知道为什么
答
这似乎是您的序列化程序的问题,试图在那里放置一个断点,看看是否命中它。如果您不使用自定义序列化程序,请暂时创建一个,以查看请求发生了什么。
可以帮助你:[超过最大请求长度](http: //stackoverflow.com/a/3853785/3060520) –
@ user3060520我发现它发生> 65k请求。仍然不知道为什么 –
我发现了一些有关该问题的资源:[WCF:如何增加请求大小限制](http://fczaja.blogspot.com.tr/2011/06/wcf-how-to-increase- allowed-request.html) –