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

如何正确记录requestMessage.Content的实际请求内容?

解决API请求Body内容日志记录问题

问题原因

StringContent.ToString() 默认返回的是类型名称(即System.Net.Http.StringContent),而非实际的请求内容,因此日志无法显示具体的JSON数据。

方案一:直接使用已序列化的变量(推荐)

你已经提前将请求对象序列化为requestJson变量,直接将该变量写入日志即可,无需从requestMessage.Content读取:

using var requestMessage = CreateRequest(authenticationResponse, HttpMethod.Post, uri);
var requestJson = JsonConvert.SerializeObject(request, _serializerSettings);
requestMessage.Content = new StringContent(requestJson, Encoding.UTF8, "application/json");
// 直接使用已序列化的requestJson记录日志
_logger.LogInformation($"[{nameof(PerformApiSearchQueryAsync)}] RequestContent='{requestJson}'");
// 执行API搜索
using var response = await _client.SendAsync(requestMessage);
_logger.LogInformation($"[{nameof(PerformApiSearchQueryAsync)}] Api responded with '{response.StatusCode}'. accesstoken='{authenticationResponse.AccessToken.Sanitize()}'");

方案二:从StringContent中读取内容(需处理流重置)

如果必须从requestMessage.Content读取内容,需调用ReadAsStringAsync()方法,但要注意HTTP内容流默认仅能读取一次,读取后需重置流位置才能保证请求正常发送:

using var requestMessage = CreateRequest(authenticationResponse, HttpMethod.Post, uri);
var requestJson = JsonConvert.SerializeObject(request, _serializerSettings);
requestMessage.Content = new StringContent(requestJson, Encoding.UTF8, "application/json");

// 读取内容并记录日志
var contentString = await requestMessage.Content.ReadAsStringAsync();
_logger.LogInformation($"[{nameof(PerformApiSearchQueryAsync)}] RequestContent='{contentString}'");

// 重置内容流,确保SendAsync能正常读取
var byteContent = await requestMessage.Content.ReadAsByteArrayAsync();
requestMessage.Content = new ByteArrayContent(byteContent);
requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

// 执行API搜索
using var response = await _client.SendAsync(requestMessage);
_logger.LogInformation($"[{nameof(PerformApiSearchQueryAsync)}] Api responded with '{response.StatusCode}'. accesstoken='{authenticationResponse.AccessToken.Sanitize()}'");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:17:39