You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.8.1与.NET Core 8中HttpClient调用API表现差异问题

REST API在.NET Framework 4.8.1与.NET Core 8中HttpClient调用表现不一致

调用某REST API时,.NET Framework 4.8.1和.NET Core 8下的HttpClient表现存在差异,其中.NET Core的结果符合预期,与Postman一致:

  • Postman:API正常工作
  • .NET Core 8下的HttpClient:API正常工作
  • .NET Framework 4.8.1下的HttpClient:仅当显式设置HttpVersion为1.0时,API才正常工作

【Postman请求截图】
Postman请求截图


未显式设置HttpVersion的.NET Framework代码

Dim client = New HttpClient()
Dim request = New HttpRequestMessage(HttpMethod.Post, "https://api_endpint:port/b1s/v2/Login")
Dim content = New StringContent("{ ""CompanyDB"": ""XXXX"", ""UserName"": ""XXXX"", ""Password"": ""XXXX"" }", Nothing, "application/json")
request.Content = content
Dim ff = request.Content.ReadAsStringAsync().Result
Dim response = client.SendAsync(request).Result
response.EnsureSuccessStatusCode()

对应输出

StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
    Connection: close
    Date: Wed, 13 Nov 2024 05:20:37 GMT
    Set-Cookie: ROUTEID=.node2; path=/;Secure;SameSite=None
    Server: Apache/2.4.51
    Server: (Unix)
    Content-Length: 0
}

设置HttpVersion为1.0的.NET Framework代码

Dim client = New HttpClient()
Dim request = New HttpRequestMessage(HttpMethod.Post, "https://api_endpint:port/b1s/v2/Login")
request.Version = HttpVersion.Version10
Dim content = New StringContent("{ ""CompanyDB"": ""XXXX"", ""UserName"": ""XXXX"", ""Password"": ""XXXX"" }", Nothing, "application/json")
request.Content = content
Dim ff = request.Content.ReadAsStringAsync().Result
Dim response = client.SendAsync(request).Result
response.EnsureSuccessStatusCode()

对应输出

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
    Vary: Accept-Encoding
    Date: Wed, 13 Nov 2024 05:27:46 GMT
    Set-Cookie: B1SESSION=<token>;HttpOnly;;Secure;SameSite=None
    Set-Cookie: ROUTEID=.node2; path=/;Secure;SameSite=None
    Server: Apache/2.4.51
    Server: (Unix)
    Connection: close
    Content-Type: application/json; odata.metadata=minimal; charset=utf-8
}

.NET Core 8代码

Dim client = New HttpClient()
Dim request = New HttpRequestMessage(HttpMethod.Post, "https://api_endpint:port/b1s/v2/Login")
Dim content = New StringContent("{ ""CompanyDB"": ""XXXX"", ""UserName"": ""XXXX"", ""Password"": ""XXXX"" }", Nothing, "application/json")
request.Content = content
Dim ff = request.Content.ReadAsStringAsync().Result
Dim response = client.SendAsync(request).Result
response.EnsureSuccessStatusCode()

对应输出

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
      Vary: Accept-Encoding
      Date: Wed, 13 Nov 2024 05:27:46 GMT
      Set-Cookie: B1SESSION=<token>;HttpOnly;;Secure;SameSite=None
      Set-Cookie: ROUTEID=.node2; path=/;Secure;SameSite=None
      Server: Apache/2.4.51
      Server: (Unix)
      Connection: close
      Content-Type: application/json; odata.metadata=minimal; charset=utf-8
}

内容的提问来源于stack exchange,提问作者raunakchoraria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 10:33:09