在 .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 方法快得多。