2014-01-08 60 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协同工作的真正原因。