回退文件终结点

ConsumesAttribute 属性支持控制器操作指定其支持的内容类型。 从 .NET 6 开始,如果配置了回退文件终结点,则它可能与放弃的路由匹配,因为请求的内容类型不同于操作 ConsumesAttribute 中指定的内容类型。 .NET 6 行为是对 .NET 5 行为的不需要的更改。 此中断性变更部分解决了此问题,方法是仅使回退文件终结点匹配 GETHEAD 请求。

引入的版本

ASP.NET Core 7.0 RC 2

旧行为

配置了 StaticFilesEndpointRouteBuilderExtensions.MapFallbackToFile 的终结点与使用任何请求方法发出的请求相匹配。

新行为

配置了 StaticFilesEndpointRouteBuilderExtensions.MapFallbackToFile 的终结点只匹配 HEADGET 请求。

中断性变更的类型

此项更改可能会影响二进制兼容性

更改原因

此更改部分还原了 .NET 6 中意外引入的较大中断性变更。 由于当使用 HEADGET 以外的方法发出请求时,回退文件响应非常罕见,因此此中断性变更的影响应该很小。

如果希望回退文件终结点用 HEAD 或 GET 以外的方法匹配请求,则可以使用 WithMetadata() 指定其他 HTTP 请求方法。 例如:

endpoints.MapFallbackToFile("index.html")
    .WithMetadata(new HttpMethodMetadata(new[] { /* List supported methods here */ }));

受影响的 API