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

为HttpRequestMessage添加指定Accept头触发格式异常求助

解决System.FormatException:Accept头格式无效的问题

这个错误是因为System.Net.Http的HTTP头解析器对multipart/related类型的Accept头有严格的格式要求,直接手动拼接字符串会触发解析失败。下面是两种可靠的解决方法:

方法一:使用强类型Header对象(推荐)

.NET提供了专门的MultipartRelatedMediaTypeHeaderValue类来构造这种类型的Accept头,能确保格式完全符合HTTP规范,避免手动拼接的错误:

var request = new HttpRequestMessage(HttpMethod.Get, new Uri("http://someurl"));
// 创建multipart/related类型的Accept头实例
var acceptHeader = new MultipartRelatedMediaTypeHeaderValue("multipart/related");
// 添加type参数,指定子类型为application/octet-stream
acceptHeader.Parameters.Add(new NameValueHeaderValue("type", "application/octet-stream"));
// 将构造好的头添加到请求中
request.Headers.Accept.Add(acceptHeader);

方法二:手动修正字符串格式

如果你坚持用字符串直接添加,需要给type参数的值加上双引号(HTTP规范中参数值如果需要明确边界时必须用引号包裹,这里解析器强制要求):

var request = new HttpRequestMessage(HttpMethod.Get, new Uri("http://someurl"));
// 注意type的值被双引号包裹
request.Headers.Add("Accept", "multipart/related;type=\"application/octet-stream\"");

为什么之前的代码会报错?

System.Net.Http的头解析逻辑会严格校验HTTP头的格式,对于multipart/related这类带参数的媒体类型,解析器期望参数值被双引号包裹。你之前的字符串没有加引号,导致解析器判定格式无效,抛出FormatException。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:13:39