Sisk

Registros de cambios

Esta página fue traducida automáticamente del inglés. Leer el original

Cada cambio realizado en Sisk se registra en el registro de cambios. Puedes ver los registros de cambios de todas las versiones de Sisk aquí.

Migración de 1.6 a 1.7 #

Sisk 1.7.0 incluye Sisk.HttpServer, Sisk.Cadente, Sisk.Cadente.CoreEngine y Sisk.IniConfiguration 1.7.0. Sisk.Documenting, Sisk.Documenting.Html y Sisk.Monitoring se entregan como 1.7.0-rc3, y Sisk.ModelContextProtocol como 1.7.0-rc1. Lee el registro de cambios completo de 1.7.0 para cada cambio.

Cambios incompatibles #

  • Route.UseRegex ya no se puede establecer. La propiedad está obsoleta y solo indica si la ruta es un RegexRoute. Crea un RegexRoute en su lugar. Los atributos de ruta con UseRegex = true y el atributo [RegexRoute] siguen funcionando. Ver regex routes.

    C#
    // antes
    router.Map(new Route(RouteMethod.Get, @"^/items/(?<id>\d+)$", action) { UseRegex = true });
    
    // después
    router.Map(new RegexRoute(RouteMethod.Get, @"^/items/(?<id>\d+)$", action));
  • Los cuerpos de solicitud están limitados a 100 MB por defecto. El valor predeterminado de HttpServerConfiguration.MaximumContentLength cambió de 0 (ilimitado) a 100 MB. El límite también se aplica a los flujos de solicitud y a los mensajes WebSocket. Establécelo en 0 para restaurar el comportamiento anterior. Consulta obtener el cuerpo de la solicitud.

    C#
    using var app = HttpServer.CreateBuilder()
        .UseConfiguration(config => config.MaximumContentLength = 0)
        .Build();
  • Las rutas estáticas se prueban antes que las rutas dinámicas. Las rutas Regex, rutas de prefijo (incluidos los servidores de archivos) y rutas de coincidencia personalizada se prueban después de cada ruta estática, sin importar el orden de registro. Ver precedencia de coincidencia.

  • Los nombres de ruta duplicados provocan una excepción al iniciar. Dos o más rutas con el mismo Name generan una ArgumentException cuando el servidor se inicia, mientras que Router.CheckForRouteCollisions está habilitado (por defecto).

  • Las rutas del servidor de archivos son rutas de prefijo. Router.MapFileSystem y HttpFileServer.CreateServingRoute crean una PrefixRoute en lugar de una ruta regex, y ya no se ven afectadas por ForceTrailingSlash.

  • RouteMethod.Any incluye QUERY. Las rutas mapeadas con MapAny también responden a solicitudes QUERY. El valor numérico de RouteMethod.Any cambió, por lo que debes recompilar el código que lo almacena o lo compara.

  • La preflight de CORS respeta UseCors. La respuesta automática OPTIONS ya no envía encabezados CORS para rutas con UseCors = false, y las rutas mapeadas explícitamente para OPTIONS manejan la solicitud en su lugar. Ver solicitudes de preflight.

  • Cadente rechaza solicitudes malformadas. Los métodos y destinos de solicitud no válidos, los valores no compatibles de Transfer-Encoding y los encabezados Content-Length conflictivos son rechazados, y los bloques de encabezado mayores de 8 KB reciben 431 Request Header Fields Too Large. Ver validación de solicitudes de Cadente.

Paquetes descontinuados #

Sisk.BasicAuth, Sisk.SslProxy y Sisk.ServiceProvider ya no se mantienen y están obsoletos en NuGet, sin paquete de reemplazo. Elimínalos de tus proyectos:

Nuevas características #

  • Coincidencia de rutas personalizada a través de Route.Match, RouteMatch, Route.IsStatic y Route.AllowRewrites, y las nuevas rutas de prefijo.
  • Soporte para el [método QUERY] HTTP con MapQuery, Route.Query, [RouteQuery] y el encabezado Accept-Query.
  • Valores atómicos de contexto a través de HttpContext.Interlocked.
  • El término de registro de acceso %{$key} término de registro de acceso, que imprime valores del contenedor de solicitud, y los helpers de escritura segura de archivos LogStream.SafeWriteToFile y LogStream.SafeAppendToFile.
  • En Cadente: solicitudes keep-alive en pipeline, WriteInlineContent y WriteInlineContentAsync, y una redirección a HTTPS para solicitudes HTTP simples recibidas en un puerto SSL.
  • En las extensiones: ejemplos de parámetros y LlmsApiExporter.FooterText en Sisk.Documenting, habilidades y la revisión de protocolo 2026-07-28 en Sisk.ModelContextProtocol, y telemetría de tráfico HTTP, latencia, rutas y excepciones en el panel de Sisk.Monitoring.

Otros cambios de comportamiento #

  • El motor HttpListener envía cada solicitud al pool de hilos, por lo que una solicitud lenta ya no retrasa la siguiente conexión aceptada. Su ContextAbortedToken devuelve CancellationToken.None en lugar de lanzar una excepción.
  • Las excepciones lanzadas por los manejadores del servidor al final de una solicitud, y al escribir registros, se escriben en el registro de errores en lugar de propagarse al motor HTTP. Ver excepciones lanzadas por los manejadores.
  • Las respuestas CORS envían Vary: Origin cuando el origen permitido depende de la solicitud.
  • El término de registro de acceso %ri utiliza la dirección del cliente resuelta al inicio de la solicitud.
  • Sisk.HttpServer tiene como objetivo .NET 8, .NET 9 y .NET 10. Sisk.Cadente y Sisk.Cadente.CoreEngine tienen como objetivo .NET 9 y .NET 10 y publican sus símbolos de depuración como paquetes .snupkg.

Escribe para buscar en la documentación y en la referencia de la API.