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