Registros de alterações
Esta página foi traduzida automaticamente do inglês. Ler o original
Todas as alterações feitas no Sisk são registradas no changelog. Você pode ver os changelogs de todas as versões do Sisk aqui.
Migrando da 1.6 para a 1.7 #
O Sisk 1.7.0 inclui Sisk.HttpServer, Sisk.Cadente, Sisk.Cadente.CoreEngine e Sisk.IniConfiguration 1.7.0. Sisk.Documenting, Sisk.Documenting.Html e Sisk.Monitoring são distribuídos como 1.7.0-rc3, e Sisk.ModelContextProtocol como 1.7.0-rc1. Leia o full 1.7.0 changelog para cada alteração.
Alterações críticas #
Route.UseRegexnão pode mais ser definido. A propriedade está obsoleta e apenas indica se a rota é umRegexRoute. Crie um RegexRoute em vez disso. Atributos de rota comUseRegex = truee o atributo[RegexRoute]continuam funcionando. Veja regex routes.C# // antes router.Map(new Route(RouteMethod.Get, @"^/items/(?<id>\d+)$", action) { UseRegex = true }); // depois router.Map(new RegexRoute(RouteMethod.Get, @"^/items/(?<id>\d+)$", action));Corpos de requisição são limitados a 100 MB por padrão. O valor padrão de HttpServerConfiguration.MaximumContentLength mudou de
0(ilimitado) para 100 MB. O limite também se aplica a fluxos de requisição e a mensagens WebSocket. Defina como0para restaurar o comportamento anterior. Veja getting the request body.C# using var app = HttpServer.CreateBuilder() .UseConfiguration(config => config.MaximumContentLength = 0) .Build();Rotas estáticas são testadas antes das rotas dinâmicas. Rotas regex, rotas de prefixo (incluindo servidores de arquivos) e rotas de correspondência personalizada são testadas após cada rota estática, independentemente da ordem de registro. Veja matching precedence.
Nomes de rotas duplicados lançam exceção na inicialização. Duas ou mais rotas com o mesmo
Nameprovocam umArgumentExceptionquando o servidor inicia, enquanto Router.CheckForRouteCollisions está habilitado (padrão).Rotas de servidor de arquivos são rotas de prefixo.
Router.MapFileSystemeHttpFileServer.CreateServingRoutecriam um PrefixRoute em vez de uma rota regex, e não são mais afetadas porForceTrailingSlash.RouteMethod.AnyincluiQUERY. Rotas mapeadas comMapAnytambém respondem a requisiçõesQUERY. O valor numérico deRouteMethod.Anymudou, portanto recompile o código que o armazena ou compara.Preflight CORS respeita
UseCors. A resposta automáticaOPTIONSnão envia mais cabeçalhos CORS para rotas comUseCors = false, e rotas explicitamente mapeadas paraOPTIONStratam a requisição. Veja preflight requests.Cadente rejeita requisições malformadas. Métodos e alvos de requisição inválidos, valores não suportados de
Transfer-Encodinge cabeçalhosContent-Lengthconflitantes são rejeitados, e blocos de cabeçalho maiores que 8 KB recebem431 Request Header Fields Too Large. Veja Cadente request validation.
Pacotes descontinuados #
Sisk.BasicAuth, Sisk.SslProxy e Sisk.ServiceProvider não são mais mantidos e estão obsoletos no NuGet, sem pacote substituto. Remova-os dos seus projetos:
- Substitua
Sisk.BasicAuthpor seu próprio request handler que valida o cabeçalhoAuthorization. - Substitua
Sisk.SslProxypelo suporte SSL nativo do engine Cadente. - Substitua
Sisk.ServiceProviderpela portable configuration incorporada aoSisk.HttpServerviaUsePortableConfiguration.
Novos recursos #
- Correspondência de rotas personalizada através de
Route.Match,RouteMatch,Route.IsStaticeRoute.AllowRewrites, e as novas rotas de prefixo. - Suporte ao método HTTP QUERY com
MapQuery,Route.Query,[RouteQuery]e o cabeçalhoAccept-Query. - Valores de contexto atômicos através de
HttpContext.Interlocked. - O termo de log de acesso
%{$key}access log term, que imprime valores do saco de requisição, e os helpers seguros de gravação de arquivosLogStream.SafeWriteToFileeLogStream.SafeAppendToFile. - No Cadente: requisições keep-alive em pipeline,
WriteInlineContenteWriteInlineContentAsync, e um redirecionamento para HTTPS para requisições HTTP simples recebidas em uma porta SSL. - Nas extensões: exemplos de parâmetros e
LlmsApiExporter.FooterTextem Sisk.Documenting, habilidades e a revisão de protocolo2026-07-28em Sisk.ModelContextProtocol, e telemetria de tráfego HTTP, latência, rotas e exceções no painel Sisk.Monitoring.
Outras alterações de comportamento #
- O motor
HttpListenerdespacha cada requisição para o pool de threads, portanto uma requisição lenta não atrasa mais a próxima conexão aceita. SeuContextAbortedTokenretornaCancellationToken.Noneem vez de lançar exceção. - Exceções lançadas pelos manipuladores do servidor ao final de uma requisição, e ao gravar logs, são escritas no log de erros em vez de escaparem para o motor HTTP. Veja exceptions thrown by handlers.
- Respostas CORS enviam
Vary: Originquando a origem permitida depende da requisição. - O termo de log de acesso
%riusa o endereço do cliente resolvido no início da requisição. Sisk.HttpServertem como alvo .NET 8, .NET 9 e .NET 10.Sisk.CadenteeSisk.Cadente.CoreEnginetêm como alvo .NET 9 e .NET 10 e publicam seus símbolos de depuração como pacotes.snupkg.