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

C#调用SOAP API报错:收到无效的Cache-Control请求头行

问题分析与解决方案

问题根源

错误信息明确指向请求头格式非法:Received an invalid header line: 'Cache-Control Value: no-store, no-cache, must-revalidate, max-age=0'。正常HTTP请求头的格式是Header-Name: Value,但这里错误地将头名称写成了Cache-Control Value,完全违反HTTP规范。

结合你的代码,存在两个核心问题:

  1. 代码重复:你复制了两遍完整的请求创建逻辑,这会导致重复设置请求头甚至触发重复请求,直接引发异常风险。
  2. Cache-Control头的设置存在隐性错误:虽然你用强类型方式设置,但重复代码可能导致头被错误拼接,或是之前的测试代码残留了Cache-Control Value这种非法头名称的设置。

修复步骤

1. 删除重复代码

先清理掉重复的请求创建代码,保留一份完整逻辑即可:

var httpClient = new System.Net.Http.HttpClient();

var request = new HttpRequestMessage()
{
    RequestUri = new Uri("https://somewhere/mySOAPAPI"),
    Method = HttpMethod.Post
};

request.Content = new StringContent(soaprequest, Encoding.UTF8, "text/xml");

request.Headers.Clear();

request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));

request.Content.Headers.ContentType = new MediaTypeHeaderValue("text/xml");

request.Headers.Add("SOAPAction", "http://tempuri.org/IExternalSolutionExecution/ExecuteXMLString");

// 正确设置Cache-Control头
request.Headers.CacheControl = new CacheControlHeaderValue
{
    NoStore = true,
    NoCache = true,
    MaxAge = TimeSpan.Zero,
    MustRevalidate = true
};

HttpResponseMessage response = await httpClient.SendAsync(request);

Console.WriteLine(response);

2. 规范设置Cache-Control头

使用CacheControlHeaderValue的强类型属性设置,避免手动拼接头内容出错:

request.Headers.CacheControl = new CacheControlHeaderValue
{
    NoStore = true,    // 对应头参数 no-store
    NoCache = true,    // 对应头参数 no-cache
    MaxAge = TimeSpan.Zero, // 对应头参数 max-age=0
    MustRevalidate = true   // 对应头参数 must-revalidate
};

这种方式会自动生成符合规范的Cache-Control: no-store, no-cache, must-revalidate, max-age=0头,彻底避免头名称错误。

3. 优化请求头设置(可选)

将Accept头添加到当前请求的头集合中,而非HttpClient的默认头,避免影响后续其他请求:

// 替换原有的 httpClient.DefaultRequestHeaders.Accept.Add(...)
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));

验证

修复后,发送请求时会生成完全合法的HTTP头,不会再出现invalid header line的错误。如果问题仍存在,建议抓包查看实际发送的请求头,确认是否还有其他非法头残留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:05:30