Änderungsprotokolle
Diese Seite wurde automatisch aus dem Englischen übersetzt. Original lesen
Jede Änderung an Sisk wird im Änderungsprotokoll festgehalten. Die Änderungsprotokolle für alle Sisk‑Versionen können Sie hier einsehen.
Migration von 1.6 zu 1.7 #
Sisk 1.7.0 liefert Sisk.HttpServer, Sisk.Cadente, Sisk.Cadente.CoreEngine und Sisk.IniConfiguration 1.7.0. Sisk.Documenting, Sisk.Documenting.Html und Sisk.Monitoring werden als 1.7.0-rc3 ausgeliefert, und Sisk.ModelContextProtocol als 1.7.0-rc1. Lesen Sie das vollständige 1.7.0 Änderungsprotokoll für alle Änderungen.
Breaking changes #
Route.UseRegexkann nicht mehr gesetzt werden. Die Eigenschaft ist veraltet und gibt nur noch an, ob die Route einRegexRouteist. Erstellen Sie stattdessen ein RegexRoute. Route‑Attribute mitUseRegex = trueund das[RegexRoute]‑Attribut funktionieren weiterhin. Siehe regex routes.C# // vorher router.Map(new Route(RouteMethod.Get, @"^/items/(?<id>\d+)$", action) { UseRegex = true }); // danach router.Map(new RegexRoute(RouteMethod.Get, @"^/items/(?<id>\d+)$", action));Anfragekörper sind standardmäßig auf 100 MB begrenzt. Der Standardwert von HttpServerConfiguration.MaximumContentLength hat sich von
0(unbegrenzt) auf 100 MB geändert. Die Begrenzung gilt auch für Anforderungs‑Streams und für WebSocket‑Nachrichten. Setzen Sie ihn auf0, um das frühere Verhalten wiederherzustellen. Siehe getting the request body.C# using var app = HttpServer.CreateBuilder() .UseConfiguration(config => config.MaximumContentLength = 0) .Build();Statische Routen werden vor dynamischen Routen getestet. Regex‑Routen, Präfix‑Routen (einschließlich Dateiservern) und benutzerdefinierte Matching‑Routen werden nach jeder statischen Route geprüft, unabhängig von ihrer Registrierungsreihenfolge. Siehe matching precedence.
Doppelte Routennamen führen beim Start zu einer Ausnahme. Zwei oder mehr Routen mit demselben
Nameverursachen eineArgumentException, wenn der Server startet, während Router.CheckForRouteCollisions aktiviert ist (Standard).Dateiserver‑Routen sind Präfix‑Routen.
Router.MapFileSystemundHttpFileServer.CreateServingRouteerzeugen eine PrefixRoute anstelle einer Regex‑Route und werden nicht mehr vonForceTrailingSlashbeeinflusst.RouteMethod.AnyschließtQUERYein. Routen, die mitMapAnygemappt werden, beantworten ebenfallsQUERY‑Anfragen. Der numerische Wert vonRouteMethod.Anyhat sich geändert, daher muss Code, der ihn speichert oder vergleicht, neu kompiliert werden.CORS‑Preflight respektiert
UseCors. Die automatischeOPTIONS‑Antwort sendet keine CORS‑Header mehr für Routen mitUseCors = false, und explizit fürOPTIONSgemappte Routen bearbeiten die Anfrage stattdessen. Siehe preflight requests.Cadente lehnt fehlerhafte Anfragen ab. Ungültige Anfragemethoden und -ziele, nicht unterstützte
Transfer-Encoding‑Werte und widersprüchlicheContent-Length‑Header werden abgelehnt, und Header‑Blöcke größer als 8 KB erhalten431 Request Header Fields Too Large. Siehe Cadente request validation.
Eingestellte Pakete #
Sisk.BasicAuth, Sisk.SslProxy und Sisk.ServiceProvider werden nicht mehr gepflegt und sind auf NuGet veraltet, ohne Ersatzpaket. Entfernen Sie sie aus Ihren Projekten:
- Ersetzen Sie
Sisk.BasicAuthdurch Ihren eigenen request handler, der denAuthorization‑Header validiert. - Ersetzen Sie
Sisk.SslProxydurch die native SSL‑Unterstützung der Cadente engine. - Ersetzen Sie
Sisk.ServiceProviderdurch die portable configuration, die inSisk.HttpServerüberUsePortableConfigurationintegriert ist.
Neue Funktionen #
- Custom route matching über
Route.Match,RouteMatch,Route.IsStaticundRoute.AllowRewritessowie die neuen prefix routes. - Unterstützung der HTTP‑QUERY‑Methode mit
MapQuery,Route.Query,[RouteQuery]und dem HeaderAccept-Query. - Atomic context values über
HttpContext.Interlocked. - Der
%{$key}‑access log term, der Werte aus dem Request‑Bag ausgibt, sowie die safe file writing helpersLogStream.SafeWriteToFileundLogStream.SafeAppendToFile. - In Cadente: pipelined Keep‑Alive‑Anfragen,
WriteInlineContentundWriteInlineContentAsyncsowie eine Weiterleitung zu HTTPS für reine HTTP‑Anfragen, die an einem SSL‑Port empfangen werden. - In den Erweiterungen: Parameterbeispiele und
LlmsApiExporter.FooterTextin Sisk.Documenting, Skills und die Protokollrevision2026-07-28in Sisk.ModelContextProtocol sowie HTTP‑Traffic, Latenz, Routen‑ und Ausnahme‑Telemetry im Sisk.Monitoring‑Dashboard.
Weitere Verhaltensänderungen #
- Die
HttpListener‑Engine verteilt jede Anfrage an den Thread‑Pool, sodass eine langsame Anfrage die nächste akzeptierte Verbindung nicht mehr verzögert. IhrContextAbortedTokenliefertCancellationToken.Nonezurück, anstatt eine Ausnahme zu werfen. - Ausnahmen, die von Server‑Handlern am Ende einer Anfrage bzw. beim Schreiben von Logs geworfen werden, werden in das Fehler‑Log geschrieben, anstatt an die HTTP‑Engine weiterzureichen. Siehe exceptions thrown by handlers.
- CORS‑Antworten senden
Vary: Origin, wenn die erlaubte Herkunft von der Anfrage abhängt. - Der
%ri‑Access‑Log‑Term verwendet die Client‑Adresse, die zu Beginn der Anfrage ermittelt wurde. Sisk.HttpServerzielt auf .NET 8, .NET 9 und .NET 10.Sisk.CadenteundSisk.Cadente.CoreEnginezielen auf .NET 9 und .NET 10 und veröffentlichen ihre Debug‑Symbole als.snupkg‑Pakete.