2017-01-02 34 views
1

我使用提琴手(或郵政經理)來調用我的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) -

enter image description here

被卡住(它甚至不命中斷點在我的代碼,而在短的請求 - 它),我從來沒有看到一個響應:

enter image description here

BTW - 如果以後我再次​​運行短體長請求(同時仍在等待以前的大量請求) - 我確實得到了200(針對短的請求)。

在web.config中我沒有設置:

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

在IIS:沒有要求過濾器
在事件查看器 - 我看不出有任何異常或警告 IIS版本:6.1(Windows 7)中 - 但它也發生在我們的服務器上。

問題

爲什麼我的101K長度的要求 - 讓我的WebAPI?

編輯

我發現,它發生了> 65000個請求。仍然不知道是什麼問題

+0

可以幫助你:[超過最大請求長度](http: //stackoverflow.com/a/3853785/3060520) –

+0

@ user3060520我發現它發生> 65k請求。仍然不知道爲什麼 –

+0

我發現了一些有關該問題的資源:[WCF:如何增加請求大小限制](http://fczaja.blogspot.com.tr/2011/06/wcf-how-to-increase- allowed-request.html) –

回答

0

它卡在request.Content.ReadAsStringAsync().Result(並且從未發佈)。奇怪,但設置爲異步,解決了這個問題。我仍然不知道爲什麼。 In General this is the solution - 左窗格是有問題的,而右窗格是工作窗格。 (我必須說,左窗格用於工作,但升級到4.6.2後 - 它開始出現問題) - 再次 - 我不知道爲什麼

0

這似乎是您的序列化程序的問題,試圖在那裏放置一個斷點,看看是否命中它。如果您不使用自定義序列化程序,請暫時創建一個,以查看請求發生了什麼。