微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有效载荷大于1500字节的远程请求被阻止

如何解决有效载荷大于1500字节的远程请求被阻止

我目前遇到一个问题,我无法真正解决问题。

设置

我有一个客户端,该客户端通过正常的HTTP请求(GET,POST等)与运行在不同Windows服务器(2012 R2到2016年)上的ASP.NET MVC Web服务进行通信。 在绝大多数Windows Server上,这种通信都能很好地进行,但是,我确实有两台服务器似乎对这些请求有问题。请注意,Web服务本身始终是相同的,只是在不同的计算机上运行。

问题

如果我发送的HTTP请求包含一些内容(基本上是GETDELETE,..以外的任何内容),则消息中将显示BadHttpRequestException

由于数据到达速度太慢,因此读取请求正文超时。请参阅MinRequestBodyDatarate。

错误与我正在与Web服务一起使用的kestrel有关,因此我环顾四周,发现了经过调整的MinRequestBodyDataRateMinRequestBodyDataRate属性,希望那将解决问题。 目前,这些值设置为20bytes / sec,超时为20,我认为就足够了。

options.Limits.MinRequestBodyDatarate =
    new MinDatarate(20,TimeSpan.FromSeconds(20));

options.Limits.MinResponseDatarate =
    new MinDatarate(20,TimeSpan.FromSeconds(20));

但是,问题仍然存在。

我发现的事情

  1. 仅当有效载荷的大小大于恰好1398个字节时,才会发生BadHttpRequestException例外情况 -奇数接近于以太网帧,如果我们增加开销。低于该值的所有内容都可以正常工作。
  2. 从远程网络发送请求时,仅发生 例外,这意味着客户端和Web服务不在同一域。但是,如果一切正常,一切正常。

在这一点上,我不确定这是否真的是与红est相关的问题,所以我尝试了另一种方法: 我已经使用PsPing在服务器上启动侦听器并从其他网络发送原始TCP程序包。出人意料的是,这种方法有效。我能够将有效载荷超过2000字节的TCP程序包发送给侦听器。 那让我觉得事情变得更奇怪了,所以

  1. 在服务器上启动侦听器(无ASP.NET MVC,无kestrel,无.NET)并发送有效载荷> 2000字节的TCP包。

结论

我不确定在这里做什么。它不能与来自其他网络的ASP.NET Web服务一起使用(尽管它在本地工作),但如果我使用“非ASP.NET侦听器”,即使是远程也可以使用。 也许这是防火墙问题,但我从未听说过可以配置这样的过滤器。 我怀疑这实际上是一个红est问题-但它可与PsPing配合使用,这很奇怪。

有人对如何进行有想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。