【问题标题】:No response from server when POST request to asp.net web api reaches some limit当对 asp.net web api 的 POST 请求达到某个限制时,服务器没有响应
【发布时间】:2016-04-30 08:36:14
【问题描述】:

我正在向 Web api 发送 JSON 数据。一切都可以在本地使用 IISExpress。但是,安装了 IIS 8 的远程服务器存在问题。当请求有效负载达到某个值时,我没有得到响应。我的意思是响应处于待处理状态(没有空响应,没有错误)。对于不同的控制器/功能,限制会有所不同,但仍然很低。它们大约为 2.5-3.5 kb。在这种情况下,感觉就像具体控制器的方法根本没有被命中(为了检查这一点,我将 return 语句放在方法的开头,如下所示)。

[HttpPost]
public async Task<IHttpActionResult> UpdateCity(int id, CityDto cityDto)
{
   return StatusCode(HttpStatusCode.NoContent);
}

我尝试设置这里提到的请求限制https://stackoverflow.com/a/3853785/3507404 没有运气。 我的设置:

1) 亚马逊 EC2

2) Windows Server 2012 r2

3) IIS 8

4) 净 4.5

我在 IIS 日志中没有看到任何相关信息。

如何调试此问题?我应该设置其他限制吗?会不会和Amazon EC2有关?

【问题讨论】:

    标签: c# asp.net iis asp.net-web-api amazon-ec2


    【解决方案1】:

    听起来像是一个死锁问题。您的方法被标记为异步,但您没有等待任何东西。要么删除异步任务,等待某些东西,要么删除异步并返回 Task.FromResult(new StatusCode(HttpStatusCode.NoContent));

    试试这个,让我知道。这可以解释随机故障时间,因为死锁只会在某些情况下发生。

    【讨论】:

    • 缺少await不会导致死锁,因为没有代码阻塞线程。
    【解决方案2】:

    碰巧这个问题与 IIS 或 Asp.net 无关。这可能是我的互联网提供商或 wi-fi 路由器导致它(或两者兼而有之)。当我使用路由器(D-link Dir-625)时,看起来一些 POST 请求(至少是 POST,没有与其他人核实)根本没有到达我的远程服务器。但是,这可能不仅仅是因为路由器。我怀疑这是我的互联网提供商端的一些配置,它不适用于我的路由器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2013-11-01
      • 1970-01-01
      • 2019-01-03
      • 2014-08-05
      • 2016-06-01
      相关资源
      最近更新 更多