Журналы изменений
Эта страница переведена с английского автоматически. Читать оригинал
Каждое изменение, внесённое в 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]продолжают работать. См. regex routes.C# // до router.Map(new Route(RouteMethod.Get, @"^/items/(?<id>\d+)$", action) { UseRegex = true }); // после router.Map(new RegexRoute(RouteMethod.Get, @"^/items/(?<id>\d+)$", action));Тела запросов по умолчанию ограничены 100 МБ. Значение по умолчанию HttpServerConfiguration.MaximumContentLength изменилось с
0(неограниченно) на 100 МБ. Ограничение также применяется к потокам запросов и сообщениям WebSocket. Установите0, чтобы восстановить прежнее поведение. См. getting the request body.C# using var app = HttpServer.CreateBuilder() .UseConfiguration(config => config.MaximumContentLength = 0) .Build();Статические маршруты проверяются до динамических маршрутов. Маршруты с регулярными выражениями, префиксные маршруты (включая файловые серверы) и пользовательские маршруты проверяются после каждого статического маршрута, независимо от порядка их регистрации. См. matching precedence.
Повторяющиеся имена маршрутов вызывают исключение при запуске. Два или более маршрутов с одинаковым
NameвызываютArgumentExceptionпри старте сервера, если включена Router.CheckForRouteCollisions (по умолчанию).Маршруты файлового сервера являются префиксными маршрутами.
Router.MapFileSystemиHttpFileServer.CreateServingRouteсоздают PrefixRoute вместо маршрута с регулярным выражением и больше не зависят отForceTrailingSlash.RouteMethod.AnyвключаетQUERY. Маршруты, сопоставленные сMapAny, также отвечают на запросыQUERY. Числовое значениеRouteMethod.Anyизменилось, поэтому пересоберите код, который сохраняет или сравнивает его.Предварительные CORS‑запросы учитывают
UseCors. Автоматический ответOPTIONSбольше не отправляет заголовки CORS для маршрутов сUseCors = false, а маршруты, явно сопоставленные дляOPTIONS, обрабатывают запрос сами. См. preflight requests.Cadente отклоняет некорректные запросы. Неправильные методы запросов и цели, неподдерживаемые значения
Transfer-Encodingи конфликтующие заголовкиContent-Lengthотклоняются, а блоки заголовков более 8 KB получают431 Request Header Fields Too Large. См. Cadente request validation.
Прекращённые пакеты #
Sisk.BasicAuth, Sisk.SslProxy и Sisk.ServiceProvider больше не поддерживаются и помечены как устаревшие в NuGet, без заменяющего пакета. Удалите их из ваших проектов:
- Замените
Sisk.BasicAuthсобственным обработчиком запросов, который проверяет заголовокAuthorization. - Замените
Sisk.SslProxyнативной поддержкой SSL движка Cadente. - Замените
Sisk.ServiceProviderпортируемой конфигурацией, встроенной вSisk.HttpServerчерезUsePortableConfiguration.
Новые возможности #
- Пользовательское сопоставление маршрутов через
Route.Match,RouteMatch,Route.IsStaticиRoute.AllowRewrites, а также новые префиксные маршруты. - Поддержка HTTP‑метода QUERY с
MapQuery,Route.Query,[RouteQuery]и заголовкомAccept-Query. - Атомарные значения контекста через
HttpContext.Interlocked. - Термин доступа
%{$key}access log term, который выводит значения из request bag, и безопасные помощники записи файловLogStream.SafeWriteToFileиLogStream.SafeAppendToFile. - В Cadente: конвейерные keep-alive запросы,
WriteInlineContentиWriteInlineContentAsync, а также перенаправление на HTTPS для обычных HTTP‑запросов, полученных на SSL‑порт. - В расширениях: примеры параметров и
LlmsApiExporter.FooterTextв Sisk.Documenting, навыки и ревизия протокола2026-07-28в Sisk.ModelContextProtocol, а также телеметрия HTTP‑трафика, задержек, маршрутов и исключений в панели Sisk.Monitoring.
Другие изменения поведения #
- Движок
HttpListenerраспределяет каждый запрос в пул потоков, поэтому медленный запрос больше не задерживает следующую принятые соединение. ЕгоContextAbortedTokenвозвращаетCancellationToken.Noneвместо выброса исключения. - Исключения, выброшенные обработчиками сервера в конце запроса и при записи логов, записываются в журнал ошибок вместо того, чтобы «выскочить» в HTTP‑движок. См. exceptions thrown by handlers.
- Ответы CORS отправляют
Vary: Origin, когда разрешённый источник зависит от запроса. - Термин доступа
%riиспользует клиентский адрес, определённый в начале запроса. Sisk.HttpServerнацелен на .NET 8, .NET 9 и .NET 10.Sisk.CadenteиSisk.Cadente.CoreEngineнацелены на .NET 9 и .NET 10 и публикуют свои отладочные символы как пакеты.snupkg.