c# - 请求参数不在 POST 请求中传输

标签 c# .net wcf post webmethod

我调用一个 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/

相关文章:

c# - 如何创建可编辑的微调器(选择器)?

c# - 将目标框架从 .NetStandard 2.0 更改为 .net 4.7.2 后无法进行 nuget 恢复

c# - 将图像添加到视频末尾

.net - 从交换帐户检索电子邮件...修改并重新发送

.net - Intellisense 告诉我 Element 'a' 不能嵌套在 Element 'a button' 中。但它不是

windows - 如何说服客户升级到 WCF 或为 Remoting 和 WCF 保留两个代码库

c# - 如何为不同的数据源实现 Data Mapper/Repository 持久化模式?

.net - F# 是否具有行多态性(或类似的东西?)

c# - 使用证书签署文件

.net - 将 [Serializable] 更改为 [DataContract]