asp.net核心如何阻止http请求锁定

时间:2017-10-08 05:03:05

标签: c# asp.net-core asp.net-core-2.0

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

  public string HomeStream()
    {

        return "Hello World";
    }

我在想某些事情是锁定http请求,因为第100个请求应该更快地返回。任何建议都会很棒。这是我的启动设置

{
  "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 网址。 enter image description here

1 个答案:

答案 0 :(得分:1)

如果您正在尝试返回一个简单的字符串并加载测试底层主机,那么我建议您删除所有中间件和服务

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!");
    });
}