回退文件终结点
ConsumesAttribute 属性支持控制器操作指定其支持的内容类型。 从 .NET 6 开始,如果配置了回退文件终结点,则它可能与放弃的路由匹配,因为请求的内容类型不同于操作 ConsumesAttribute 中指定的内容类型。 .NET 6 行为是对 .NET 5 行为的不需要的更改。 此中断性变更部分解决了此问题,方法是仅使回退文件终结点匹配 GET
和 HEAD
请求。
引入的版本
ASP.NET Core 7.0 RC 2
旧行为
配置了 StaticFilesEndpointRouteBuilderExtensions.MapFallbackToFile 的终结点与使用任何请求方法发出的请求相匹配。
新行为
配置了 StaticFilesEndpointRouteBuilderExtensions.MapFallbackToFile 的终结点只匹配 HEAD
和 GET
请求。
中断性变更的类型
此项更改可能会影响二进制兼容性。
更改原因
此更改部分还原了 .NET 6 中意外引入的较大中断性变更。 由于当使用 HEAD
或 GET
以外的方法发出请求时,回退文件响应非常罕见,因此此中断性变更的影响应该很小。
建议的操作
如果希望回退文件终结点用 HEAD 或 GET 以外的方法匹配请求,则可以使用 WithMetadata()
指定其他 HTTP 请求方法。 例如:
endpoints.MapFallbackToFile("index.html")
.WithMetadata(new HttpMethodMetadata(new[] { /* List supported methods here */ }));