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.UseRegexya no se puede establecer. La propiedad está obsoleta y solo indica si la ruta es unRegexRoute. Crea un RegexRoute en su lugar. Los atributos de ruta conUseRegex = truey 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 en0para 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
Namegeneran unaArgumentExceptioncuando el servidor se inicia, mientras que Router.CheckForRouteCollisions está habilitado (por defecto).Las rutas del servidor de archivos son rutas de prefijo.
Router.MapFileSystemyHttpFileServer.CreateServingRoutecrean una PrefixRoute en lugar de una ruta regex, y ya no se ven afectadas porForceTrailingSlash.RouteMethod.AnyincluyeQUERY. Las rutas mapeadas conMapAnytambién responden a solicitudesQUERY. El valor numérico deRouteMethod.Anycambió, por lo que debes recompilar el código que lo almacena o lo compara.La preflight de CORS respeta
UseCors. La respuesta automáticaOPTIONSya no envía encabezados CORS para rutas conUseCors = false, y las rutas mapeadas explícitamente paraOPTIONSmanejan 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-Encodingy los encabezadosContent-Lengthconflictivos son rechazados, y los bloques de encabezado mayores de 8 KB reciben431 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:
- Reemplaza
Sisk.BasicAuthcon tu propio manejador de solicitudes que valide el encabezadoAuthorization. - Reemplaza
Sisk.SslProxycon el soporte SSL nativo del motor Cadente. - Reemplaza
Sisk.ServiceProvidercon la configuración portable incorporada enSisk.HttpServermedianteUsePortableConfiguration.
Nuevas características #
- Coincidencia de rutas personalizada a través de
Route.Match,RouteMatch,Route.IsStaticyRoute.AllowRewrites, y las nuevas rutas de prefijo. - Soporte para el [método QUERY] HTTP con
MapQuery,Route.Query,[RouteQuery]y el encabezadoAccept-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 archivosLogStream.SafeWriteToFileyLogStream.SafeAppendToFile. - En Cadente: solicitudes keep-alive en pipeline,
WriteInlineContentyWriteInlineContentAsync, y una redirección a HTTPS para solicitudes HTTP simples recibidas en un puerto SSL. - En las extensiones: ejemplos de parámetros y
LlmsApiExporter.FooterTexten Sisk.Documenting, habilidades y la revisión de protocolo2026-07-28en 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
HttpListenerenvía cada solicitud al pool de hilos, por lo que una solicitud lenta ya no retrasa la siguiente conexión aceptada. SuContextAbortedTokendevuelveCancellationToken.Noneen 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: Origincuando el origen permitido depende de la solicitud. - El término de registro de acceso
%riutiliza la dirección del cliente resuelta al inicio de la solicitud. Sisk.HttpServertiene como objetivo .NET 8, .NET 9 y .NET 10.Sisk.CadenteySisk.Cadente.CoreEnginetienen como objetivo .NET 9 y .NET 10 y publican sus símbolos de depuración como paquetes.snupkg.