我调用一个 WebMethod
通过 Fiddler,我在“请求正文”中提供了 2 个所需的参数,我得到了一个奇怪的行为:
- 前 10 个请求,它按预期工作 => 我可以在
HttpContext.Current.Request.Form
中找到参数值 - 从第 11 个 POST 请求开始,POST 参数未传输到
WCF
服务 => 在调试WebMethod
时,HttpContext.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.
...
}
最佳答案
可能您这里有典型的 IIS 默认 10 个并发连接。 从 fiddler 调用 WCF 方法后,您是否能够验证连接是否关闭?可能它没有关闭,当您遇到第 11 个请求时它挂起(直到来自池的任何连接关闭),所以您看不到您的数据...
解决方案: 1.关闭连接(自己制作代理测试客户端,调用后在代理上关闭连接)
var apiClient = CreateApiClient();
try
{
apiClient.GetSomething();
apiClient.Close();
}
catch (Exception ex)
{
LogHelper.Current.WriteToLog(LogHelper.LogFiles.MessageLog, ex);
apiClient.Abort();
}
2.更改配置设置:
serviceThrottling maxConcurrentCalls="10000" maxConcurrentSessions="10000" maxConcurrentInstances="10000"
关于c# - 请求参数不在 POST 请求中传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998812/