IISHttpServer OnDisconnect NullReferenceException

IISHttpServer OnDisconnect NullReferenceException

虽然 运行 一个主要基于执行端点的 .NET Core Web 应用程序,但我经常在调用 [=14= 之后的 AbortIO 调用中得到 NullReferenceException ] 在我的代码中。

有人有什么想法吗?

例如下面的代码:

app.UseEndpoints(endpoints =>
{
    endpoints.MapGet("/someurl", async context => {
        context.Response.Redirect("/someotherurl", false);
    });
});

这里经常出错,因为 context 为空:

private static void OnDisconnect(IntPtr pvManagedHttpContext)
{
    IISHttpContext context = null;
    try
    {
        context = (IISHttpContext)GCHandle.FromIntPtr(pvManagedHttpContext).Target;
        context.AbortIO(clientDisconnect: true);
    }
    catch (Exception ex)
    {
        context?.Server._logger.LogError(0, ex, $"Unexpected exception in {nameof(IISHttpServer)}.{nameof(OnDisconnect)}.");
    }
}

来源:Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer,第 173 行

已由 .net 团队修复:https://github.com/dotnet/aspnetcore/issues/17516