asp.net core 如何阻止http请求被锁定

asp.net core how can I stop http request from locking

我是 asp.net Core 的新手,到目前为止我喜欢它。我有一个非常简单的操作,只是 return 一个字符串 "Hello World" 。我的问题是,我认为 http 请求正在锁定,这实际上正在减慢速度,本质上就像这样 ASP.NET application to serve multiple requests from a single process 。我正在进行负载测试,我的第一个请求是 967 毫秒,但是我的第 100 个请求需要 10927 毫秒或 10 秒,这对于 return 一个简单的字符串来说是难以置信的长。这是在发布模式下完成的。

  public string HomeStream()
    {

        return "Hello World";
    }

我认为有什么东西正在锁定 http 请求,因为第 100 个请求应该 return 快得多。任何建议都会很棒。这是我的启动设置

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:55556/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "MyApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5002/"
    }
  }
}

我正在使用 5002 url 。

如果您所做的只是尝试 return 一个简单的字符串并对底层主机进行负载测试,那么我建议您删除所有中间件和服务

using System.Net;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;

public static void Main(string[] args)
{
    IWebHost host = new WebHostBuilder()
        .UseKestrel()
        .Configure(app =>
        {
            // notice how we don't have app.UseMvc()?
            app.Map("/hello", SayHello);  // <-- ex: "http://localhost/hello"
        })
        .Build();

    host.Run();
}

private static void SayHello(IApplicationBuilder app)
{
    app.Run(async context =>
    {
        // implement your own response
        await context.Response.WriteAsync("Hello World!");
    });
}