请求参数不会在 POST 请求中传输
Posted
技术标签:
【中文标题】请求参数不会在 POST 请求中传输【英文标题】:Request parameters are not transmitted on a POST request 【发布时间】:2014-01-26 17:45:49 【问题描述】:我通过 Fiddler 调用 WebMethod
,我在“请求正文”中提供了 2 个所需的参数,但我得到了一个奇怪的行为:
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.
...
【问题讨论】:
您能否添加更多详细信息,例如您的 POST 请求的屏幕截图?谢谢。 @SilverlightFox:我无法发布它,因为机密数据太多。只要它在相同的情况下工作=>数据是有效的。其他原因导致问题,可能是 WS 应用程序中的某些问题(回收或类似)。 信息是否可缓存或每次都返回新信息?您是否能够更改 c# 请求以更新计数器? (这可能不会清除数据) @Gauthier:是的,数据已经缓存在 C# 端。您的意思是发送一个新的 POST 参数(类似于时间戳)? 是的,这将是我的第一步。我不确定你是如何实现的,或者 C# 是如何实现它的合同的,所以这甚至是不可能的。 【参考方案1】:您可能在这里有典型的 IIS 默认 10 个并发连接。 从提琴手调用 WCF 方法后,您是否能够验证连接是否关闭?可能它没有关闭,当你点击第 11 个请求时它会挂起(直到池中的任何连接都关闭),所以你看不到你的数据......
解决方案: 1.close connection(制作自己的代理测试客户端,调用后关闭代理上的连接)
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"
【讨论】:
感谢您的回复,第 1 点不适用,因为我们正在谈论 Fiddler,而第 2 点,我已经设置了 maxconcurrentcalls = 20。我将其设置为 1000,没有结果。跨度> 【参考方案2】:在我以 JSON 格式发送参数后修复。仍然没有得到它与 POST/JSON 一起工作的真正原因。
【讨论】:
以上是关于请求参数不会在 POST 请求中传输的主要内容,如果未能解决你的问题,请参考以下文章