问题描述
设置
我有一个客户端,该客户端通过正常的HTTP请求(GET,POST等)与运行在不同Windows服务器(2012 R2到2016年)上的ASP.NET MVC Web服务进行通信。 在绝大多数Windows Server上,这种通信都能很好地进行,但是,我确实有两台服务器似乎对这些请求有问题。请注意,Web服务本身始终是相同的,只是在不同的计算机上运行。
问题
如果我发送的HTTP请求包含一些内容(基本上是GET
,DELETE
,..以外的任何内容),则消息中将显示BadHttpRequestException
由于数据到达速度太慢,因此读取请求正文超时。请参阅MinRequestBodyDatarate。
该错误与我正在与Web服务一起使用的kestrel
有关,因此我环顾四周,发现了经过调整的MinRequestBodyDataRate
和MinRequestBodyDataRate
属性,希望那将解决问题。
目前,这些值设置为20bytes / sec,超时为20,我认为就足够了。
options.Limits.MinRequestBodyDatarate =
new MinDatarate(20,TimeSpan.FromSeconds(20));
options.Limits.MinResponseDatarate =
new MinDatarate(20,TimeSpan.FromSeconds(20));
但是,问题仍然存在。
我发现的事情
- 仅当有效载荷的大小大于恰好1398个字节时,才会发生
BadHttpRequestException
例外情况 -奇数接近于以太网帧,如果我们增加开销。低于该值的所有内容都可以正常工作。 - 从远程网络发送请求时,仅发生 例外,这意味着客户端和Web服务不在同一域。但是,如果一切正常,一切正常。
在这一点上,我不确定这是否真的是与红est相关的问题,所以我尝试了另一种方法:
我已经使用PsPing
在服务器上启动侦听器并从其他网络发送原始TCP程序包。出人意料的是,这种方法有效。我能够将有效载荷超过2000字节的TCP程序包发送给侦听器。
那让我觉得事情变得更奇怪了,所以
- 在服务器上启动侦听器(无
ASP.NET MVC
,无kestrel
,无.NET
)并发送有效载荷> 2000字节的TCP包。
结论
我不确定在这里做什么。它不能与来自其他网络的ASP.NET
Web服务一起使用(尽管它在本地工作),但如果我使用“非ASP.NET侦听器”,即使是远程也可以使用。
也许这是防火墙问题,但我从未听说过可以配置这样的过滤器。
我怀疑这实际上是一个红est问题-但它可与PsPing配合使用,这很奇怪。
有人对如何进行有想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)