在 C# 中使用 HttpClient 的 HTTP Rest 调用在字节数组大小变为 100 KB 左右时超时

问题描述

我正在调用一个由我实现的 rest api post 方法,它具有普通的字符串参数和一个 fileData 字节数组。我只是使用 application/json From Body 技术来实现这个服务。

当我使用 HttpClient 从 C# 代码调用此 api 时,它适用于 10-20 KB 等较小的文件。但是当文件大小在 100-150 KB 左右时,PostAsync 方法在超时发生之前不会得到任何东西。但是当我从 angular 调用相同的 API 时,它也适用于较大的文件大小。

下面是我从客户端调用的 c# 代码块。请指导这里发生的事情。

Photo photo = new Photo
{
    CustomerMobile = row["CustomerMobile"].ToString(),PhotoCode = row["PhotoCode"].ToString(),PhotoSize = row["PhotoSize"].ToString(),TemplateId = int.Parse(row["TemplateId"].ToString()),CreatedDate = DateTime.Parse(row["CreatedDate"].ToString()),};

if (!string.IsNullOrEmpty(row["ExpiryDate"].ToString()))
    photo.ExpiryDate = DateTime.Parse(row["ExpiryDate"].ToString());
    
var data = File.ReadAllBytes(row["PhotoUrl"].ToString());

photo.FileData = data;
photo.FileName = Path.GetFileName(row["PhotoUrl"].ToString());

using var client = new HttpClient();
HttpResponseMessage response = null;

client.BaseAddress = new Uri(Settings.Configurations.APIBaseServerURL);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add(Settings.Configurations.Application,Settings.Configurations.ApplicationId);
client.DefaultRequestHeaders.Add(Settings.Configurations.SessionID,sessionID);

response = client.PostAsync(url,new StringContent(JsonConvert.SerializeObject(photo).ToString(),Encoding.UTF8,"application/json")).Result;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)