更新日志
本页由英文自动翻译。 阅读原文
每一次对 Sisk 的更改都记录在更新日志中。您可以在此处查看所有 Sisk 版本的更新日志。
从 1.6 迁移到 1.7 #
Sisk 1.7.0 包含 Sisk.HttpServer、Sisk.Cadente、Sisk.Cadente.CoreEngine 和 Sisk.IniConfiguration 1.7.0。Sisk.Documenting、Sisk.Documenting.Html 和 Sisk.Monitoring 以 1.7.0-rc3 发行,Sisk.ModelContextProtocol 为 1.7.0-rc1。请阅读完整的 1.7.0 更新日志了解所有更改。
破坏性更改 #
Route.UseRegex不能再被设置。 此属性已废弃,仅用于报告路由是否为RegexRoute。请改为创建一个 RegexRoute。带有UseRegex = true的路由属性和[RegexRoute]特性仍然可用。参见正则路由。C# // 之前 router.Map(new Route(RouteMethod.Get, @"^/items/(?<id>\d+)$", action) { UseRegex = true }); // 之后 router.Map(new RegexRoute(RouteMethod.Get, @"^/items/(?<id>\d+)$", action));请求体默认限制为 100 MB。 HttpServerConfiguration.MaximumContentLength 的默认值已从
0(无限制)改为 100 MB。此限制同样适用于请求流和 WebSocket 消息。将其设为0可恢复之前的行为。参见获取请求体。C# using var app = HttpServer.CreateBuilder() .UseConfiguration(config => config.MaximumContentLength = 0) .Build();静态路由在动态路由之前进行匹配。 正则路由、前缀路由(包括文件服务器)以及自定义匹配路由会在每个静态路由之后进行测试,且不受注册顺序影响。参见匹配优先级。
重复的路由名称将在启动时抛出异常。 当服务器启动时,如果有两个或以上具有相同
Name的路由,将触发ArgumentException,前提是已启用 Router.CheckForRouteCollisions(默认开启)。文件服务器路由是前缀路由。
Router.MapFileSystem和HttpFileServer.CreateServingRoute会创建一个 PrefixRoute 而非正则路由,并且不再受ForceTrailingSlash的影响。RouteMethod.Any包含QUERY。 使用MapAny映射的路由同样会响应QUERY请求。RouteMethod.Any的数值已更改,请重新编译使用或比较该值的代码。CORS 预检遵循
UseCors。 自动的OPTIONS响应不再为UseCors = false的路由发送 CORS 头部,而显式映射的OPTIONS路由会自行处理该请求。参见预检请求。Cadente 拒绝格式错误的请求。 无效的请求方法和目标、不受支持的
Transfer-Encoding值以及冲突的Content-Length头部都会被拒绝,且大于 8 KB 的头部块会返回431 Request Header Fields Too Large。参见Cadente 请求验证。
已停止维护的包 #
Sisk.BasicAuth、Sisk.SslProxy 和 Sisk.ServiceProvider 已不再维护,并在 NuGet 上标记为已弃用,且没有替代包。请从项目中移除它们:
- 用您自己的请求处理程序替代
Sisk.BasicAuth,自行验证Authorization头部。 - 用 Cadente 引擎 的原生 SSL 支持替代
Sisk.SslProxy。 - 用
Sisk.HttpServer通过UsePortableConfiguration内置的可移植配置替代Sisk.ServiceProvider。
新特性 #
- 通过
Route.Match、RouteMatch、Route.IsStatic和Route.AllowRewrites实现自定义路由匹配,以及新的前缀路由。 - 支持 HTTP QUERY 方法,使用
MapQuery、Route.Query、[RouteQuery]和Accept-Query头部。 - 通过
HttpContext.Interlocked实现原子上下文值。 %{$key}访问日志项,用于打印请求包的值;以及安全文件写入帮助方法LogStream.SafeWriteToFile和LogStream.SafeAppendToFile。- 在 Cadente 中:管道化的 keep-alive 请求、
WriteInlineContent与WriteInlineContentAsync,以及对在 SSL 端口上收到的普通 HTTP 请求进行 HTTPS 重定向。 - 在扩展中:参数示例和
LlmsApiExporter.FooterText(位于 Sisk.Documenting),技能以及2026-07-28协议修订(位于 Sisk.ModelContextProtocol),以及在 Sisk.Monitoring 仪表盘中的 HTTP 流量、延迟、路由和异常遥测。
其他行为更改 #
HttpListener引擎会将每个请求分派到线程池,因此慢请求不再阻塞下一个接受的连接。其ContextAbortedToken现在返回CancellationToken.None而不是抛出异常。- 在请求结束时以及写入日志时,由服务器处理程序抛出的异常会写入错误日志,而不是逃逸到 HTTP 引擎。参见处理程序抛出的异常。
- 当允许的来源取决于请求时,CORS 响应会发送
Vary: Origin。 %ri访问日志项使用请求开始时解析的客户端地址。Sisk.HttpServer目标为 .NET 8、.NET 9 和 .NET 10。Sisk.Cadente与Sisk.Cadente.CoreEngine目标为 .NET 9 和 .NET 10,并将其调试符号以.snupkg包形式发布。