Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Remove msgtype requirement in HttpMessageContent

未关闭
#407 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
45/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
停滞
技术栈
csharp
领域
api, backend

调研方向

从 src/System.Net.Http.Formatting/HttpMessageContent.cs 中引用的行开始,这些行添加了 msgtype=request 并验证了 msgtype=response。跟踪 ReadAsHttpResponseMessageAsync() 并确定所需的可配置行为;完成标准是请求可以省略 msgtype,并且接受带有 Content-Type: application/http 的响应。

由索引模型根据 Issue 内容生成。

描述

HttpMessageContent serializes HTTP requests/responses inside a mulitpart/mixed body.

For requests, it sends the header Content-Type: application/http; msgtype=request.
For responses, it expects the header Content-Type: application/http; msgtype=response.

This is where msgtype=request is added in source:
https://github.com/aspnet/AspNetWebStack/blob/1231b77d79956152831b75ad7f094f844251b97f/src/System.Net.Http.Formatting/HttpMessageContent.cs#L68

This is where msgtype=response is validated in source:
https://github.com/aspnet/AspNetWebStack/blob/1231b77d79956152831b75ad7f094f844251b97f/src/System.Net.Http.Formatting/HttpMessageContent.cs#L142-L171

HttpMessageContent should be configurable to not sent a msgtype parameter, and accept responses without a msgtype (given Content-Type: application/http).

As a common real-world example, the OData specification uses Content-Type: application/http without any further msgtype in both its batched requests and responses, see:
https://www.odata.org/documentation/odata-version-2-0/batch-processing/

Inside Microsoft, Dataverse exposes OData services and its batching endpoint is unusable with HttpMessageContent because:

  • Dataverse throws when a batch has msgtype=request in its Content-Type;
  • ReadAsHttpResponseMessageAsync() throws when parsing Dataverse response because it does not have msgtype=response.
主要语言
C#
星标
897
派生
358
平均合并
40 分钟
30 天内合并 PR
1

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

aspnet/AspNetWebStack 的其他 Issue

查看 aspnet/AspNetWebStack 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。