2014-01-08 208 views
5

我調用通過提琴手一個WebMethod傳遞,我提供2組需要的參數在「請求體」,我得到一個奇怪的現象:請求參數未在POST請求

  • 第10個請求,它按預期工作=>我可以找到HttpContext.Current.Request.Form
  • 參數值開始第11 POST請求時,POST參數不被髮送到服務WCF =>在調試WebMethodHttpContext.Current.Request.Form是空的。

任何線索爲什麼會發生這種情況?

這裏是我的代碼:

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "/getsomething")] 
[FaultContract(typeof(ResponseMessageStatus))] 
[DynamicResponseType] 
public Stream GetSomething() 
{ 
    var par1 = HttpContext.Current.Request.Form["myparameter"] ; 
    //after 10 requests, HttpContext.Current.Request.Form is empty. 
    ... 
} 
+0

你可以添加更多的細節,比如你的POST請求的截圖嗎?謝謝。 – SilverlightFox

+0

@SilverlightFox:由於機密數據太多,我無法發佈。只要它在相同的情況下工作=>數據是重要的。其他的東西正在導致這個問題,也許是WS應用程序中的一些東西(回收或類似)。 – user3104183

+0

是否可以緩存信息或每次都返回新信息? 你能改變c#請求來更新計數器嗎? (這可能不會清除數據) – Gauthier

回答

0

也許你這裏有典型的IIS默認的10個併發連接。 您是否能夠驗證,然後連接關閉之後,您從小提琴手調用WCF方法?也許它不是封閉的,當你打11的請求它掛(到從池中的任何連接被關閉),這樣你就不會看到你的數據...

解決方案: 1.關閉連接(使自己代理測試客戶端和呼叫後代理密切聯繫)

var apiClient = CreateApiClient(); 
try 
{ 
    apiClient.GetSomething(); 
    apiClient.Close(); 
} 
catch (Exception ex) 
{ 
    LogHelper.Current.WriteToLog(LogHelper.LogFiles.MessageLog, ex); 
    apiClient.Abort(); 
} 

2.change配置設置:

serviceThrottling maxConcurrentCalls="10000" maxConcurrentSessions="10000" maxConcurrentInstances="10000" 
+0

感謝您的回覆,第1點沒有申請,因爲我們正在談論的提琴手和第2點,我已經到位maxconcurrentcalls = 20。我把它設置爲1000,沒有結果。 – user3104183

0

固定就在我發送的參數爲JSON。仍然沒有得到它與POST/JSON協同工作的真正原因。