ASP.NET Core 9 RC 1:WebSocket 的 Keep-Alive 超时、改进的 SignalR 追踪等

.NET 9 RC1 发布概述

上周,微软发布了 .NET 9 的第一个候选版本 (RC1),这是新框架的首个可用于生产的版本,预计将在今年晚些时候正式发布。该版本包含了许多新功能和改进,尤其是在 ASP.NET Core 方面。

ASP.NET Core 的主要更新

  1. WebSocket 保持连接超时
    ClientWebSocketOptionsWebSocketCreationOptions 中新增了 API,允许设置 WebSocket 的保持连接超时时间。如果客户端在指定时间内未响应,连接将被中止并抛出异常。这一改进解决了 2021 年提出的问题,即在不同操作系统(Windows 和 Linux)上,TCP 重传超时时间不一致的问题。
  2. Keyed DI 服务支持
    在构造函数和 Invoke / InvokeAsync 方法中新增了对 Keyed DI 服务的支持。Keyed DI 是一种通过键注册和检索依赖注入 (DI) 服务的机制。服务注册后,可以通过键来获取对应的服务。以下是一个示例:

    var app = builder.Build();
    app.UseMiddleware<MyMiddleware>();
    app.Run();
    
    internal class MyMiddleware
    {
        private readonly RequestDelegate _next;
    
        public MyMiddleware(RequestDelegate next, [FromKeyedServices("test")] MySingletonClass service)
        {
            _next = next;
        }
    
        public Task Invoke(HttpContext context, [FromKeyedServices("test2")] MyScopedClass scopedService) => _next(context);
    }
  3. SignalR 分布式追踪改进
    SignalR 分布式追踪功能在 .NET 9 Preview 6 中引入,允许为 Hub 方法调用发出事件。在此版本中,新增了客户端 Span 的创建和上下文传播支持,使得可以追踪从客户端到服务器再返回的调用流程。

其他更新

  1. InputNumber 组件的类型覆盖支持
    新增了对 InputNumber 组件类型覆盖的支持。
  2. Linux 上的 HTTPS 开发证书支持
    在基于 Ubuntu 和 Fedora 的 Linux 发行版上,ASP.NET Core 的 HTTPS 开发证书现在可以配置为 Chromium 和 Mozilla 浏览器的受信任证书,并可用于 .NET API。

更多信息

有关 .NET 9 RC1 中 ASP.NET Core 更新的详细信息,可参考官方 发布说明。此外,.NET 9 的 ASP.NET Core 路线图也可在 GitHub 上查看。

阅读 69
0 条评论