5.28配置 HTTP 版本

创建于 2026 年 8 月 17 日约 1 分钟读完

在发起 HTTP 远程请求时,默认采用的 HTTP 协议版本为 1.1。不过,在访问部分第三方服务器时,这些服务器可能会对 HTTP 版本进行校验(例如,要求使用 2.0 版本)。

HTTP 声明式请求通过 HttpVersionAttribute 特性来设置请求的 HTTP 版本。相应的 HTTP 声明式提取器实现为 HttpVersionDeclarativeExtractor 类型,该类型负责解析 HttpVersionAttribute 特性并构建 HttpRequestBuilder 实例所需的 HTTP 版本配置。

cs
// 在接口定义上应用,影响所有方法[HttpVersion("1.2")]public interface IHttpService : IHttpDeclarative{    [Get("https://furion.net/logo.png")]    Task<string> GetStringAsync();    // 在方法上应用    [HttpVersion("2.0")]    [Get("https://furion.net/logo2.png")]    Task<string> GetStringAsync();}

启用后,发送 HTTP 远程请求时会自动设置 HTTP 版本。

除可通过 [HttpVersion] 特性进行配置外,系统还支持全局设置方式,具体示例如下:

cs
// 配置默认客户端services.AddHttpClient(string.Empty, client =>{    client.DefaultRequestVersion = HttpVersion.Version10;});// 配置特定客户端services.AddHttpClient("weixin", client =>{    client.DefaultRequestVersion = HttpVersion.Version10;});

HttpVersionAttribute 包含以下构造函数和属性:

  • 构造函数

    • new(version):作用于方法或接口,设置 HTTP 版本。
  • 属性

    • VersionHTTP 版本(string 类型)。