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

WebRequest添加Accept头报错:需用对应属性/方法,Postman正常MVC异常

解决WebRequest设置Accept头时的"The 'Accept' header must be modified using the appropriate property or method."错误

我来帮你搞定这个问题!你遇到的这个报错,核心原因是**WebRequest(底层实际是HttpWebRequest)对Accept这类标准HTTP请求头,要求通过专门的属性来设置,不能直接操作Headers集合**。

你看,像Accept、Content-Type这类常见的HTTP头,.NET框架为HttpWebRequest提供了对应的强类型属性,直接用这些属性赋值才是合规的操作。你原来的代码里用req.Headers.Add("Accept", "..."),这就触发了框架的限制,导致抛出那个错误。

修正后的代码片段

咱们把Accept头的设置改成用Accept属性,其他头的设置保持不变就可以了:

WebRequest req = WebRequest.Create(@"url");
req.Method = "GET";
// Authorization没有对应的专属属性,直接通过Headers设置是正确的
req.Headers["Authorization"] = "Basic " + "QzdBQUNFO";
req.ContentType = "application/vnd.onem2m-res+json";
// 重点:用Accept属性替代Headers.Add设置Accept头
req.Accept = "application/vnd.onem2m-res+json;";
req.Headers["Cache-Control"] = "no-cache";
req.Headers["X-M2M-RI"] = "9900001";
req.Headers["X-M2M-Origin"] = "C7AACE9-25";

HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
var encoding = resp.CharacterSet == "" ? Encoding.UTF8 : Encoding.GetEncoding(resp.CharacterSet);

补充说明

  • 对于Content-Type,你原来用req.ContentType赋值是正确的,这也是框架推荐的方式;
  • 像Authorization、Cache-Control、X-M2M-RI这类没有对应专属属性的头,直接通过Headers集合设置是没问题的;
  • Postman能正常请求是因为它没有.NET框架里的这个限制,直接发送原始请求头即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:57:33