在 .NET Core 3.1 中写入响应主体的最有效方式
Most efficient way to write to response body in .NET Core 3.1
在 .NET Core 3.1 中是否有更有效的写入响应主体的方法?
我知道端点的 RequestDelegate 需要是一个任务,因为它将作为线程由 .NET 管道启动,但使用 await 重复调用 WriteAsync 似乎过于冗长且效率低下。
下面是我要完成的一些示例代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Flux
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", DefaultRequest);
});
}
public async Task DefaultRequest(HttpContext context)
{
await context.Response.WriteAsync("<html>");
await context.Response.WriteAsync("<head>");
await context.Response.WriteAsync("<title>Hello World!</title>");
await context.Response.WriteAsync("</head>");
await context.Response.WriteAsync("<body>");
await context.Response.WriteAsync("Hello World!");
await context.Response.WriteAsync("</body>");
await context.Response.WriteAsync("</html>");
}
}
}
您要找的似乎是注入静态 html 文件。这里有一个教程你可以使用:Click Me
这样你就可以简单地编写你的 html 文件,然后注入它,所以你不必逐行执行。 :
根据 ,StringBuilder
方法比同步 Response.Write
方法慢,但它比 Response.WriteAsync
方法快得多。
在 .NET Core 3.1 中是否有更有效的写入响应主体的方法?
我知道端点的 RequestDelegate 需要是一个任务,因为它将作为线程由 .NET 管道启动,但使用 await 重复调用 WriteAsync 似乎过于冗长且效率低下。
下面是我要完成的一些示例代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Flux
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", DefaultRequest);
});
}
public async Task DefaultRequest(HttpContext context)
{
await context.Response.WriteAsync("<html>");
await context.Response.WriteAsync("<head>");
await context.Response.WriteAsync("<title>Hello World!</title>");
await context.Response.WriteAsync("</head>");
await context.Response.WriteAsync("<body>");
await context.Response.WriteAsync("Hello World!");
await context.Response.WriteAsync("</body>");
await context.Response.WriteAsync("</html>");
}
}
}
您要找的似乎是注入静态 html 文件。这里有一个教程你可以使用:Click Me
这样你就可以简单地编写你的 html 文件,然后注入它,所以你不必逐行执行。 :
根据 StringBuilder
方法比同步 Response.Write
方法慢,但它比 Response.WriteAsync
方法快得多。