【发布时间】:2015-05-23 20:26:44
【问题描述】:
我在 ApiController 中定义了这个端点:
public async Task<IHttpActionResult> GetAsync()
{
await Task.Delay(1000);
return Ok("getasync");
}
我正在运行 Apache Benchmark 来运行 50 个并发请求,如下所示:
ab -c50 -n50 http://localhost/api/hello/getasync
Requests completed in IIS: 5050ms
Requests completed in IISExpress: 1080ms
似乎在 IIS 上这些请求不是异步处理的,而是只有 10 个线程同步处理请求。
我还通过 WebApi(使用 HttpClient)将 http 请求代理到在 1000 毫秒延迟后响应的 nodejs 端点来测试这一点。我看到类似的结果,代码似乎在 IISExpress 中异步运行,但在 IIS 中同步运行。
我还在 IIS 中禁用了会话状态,但这没有效果。
这两个测试都在 Windows 8.1 上运行。 IIS 版本为 8.5。
谁能指出为什么 IIS 不异步处理这些请求?
【问题讨论】:
标签: c# asp.net iis asp.net-web-api