首页 > 解决方案 > HTTP 请求中没有正文时的流行为

问题描述

使用 Azure Functions .Net 5 和SDK,当请求没有正文时,属性Microsoft.Azure.Functions.Worker.Http的预期行为是什么?HttpRequestData.Bodynull,是,是Stream.Empty,别的什么吗?

标签: c#asp.netazure-functions.net-5

解决方案


HttpRequestData.Body当请求没有正文时,财产的预期行为是什么?

作为字节串的原始 HTTP 请求正文。这对于以不同方式处理数据(例如加载数据、解析等)很有用。请求中消息体的存在是通过在请求的消息头中包含 Content-Length 或 Transfer-Encoding 头字段来表示的。如果 content-length 为空,则读取的请求不返回任何可读取的内容。EOF如果(Function) 返回类型无效,有时会引发错误。

使用 azure 函数从 asp.net core 5 读取 http 请求正文

  1. 创建 Asp.Net Core 5 Project 和 Azure Functions 隔离环境
  2. 在包/依赖项中添加它们的每个引用。您需要将target frameworkMicrosoft SDK 版本从 3.1 更改为 5,因为默认情况下它是在 Azure Functions 的 3.1 中创建的csproj

我们需要在 Core 项目中的 local.setting.json 文件和 Program.cs 文件中进行更改,以读取 Http 请求正文。参考这个这个一步一步的过程!


HttpRequestBody中,Content-length: 一些数值(但不是零)指定 HttpRequest 的结尾及其长度。如果Content-Length: 0,则HttpRequestData包含像 {} 这样的空正文。

如果两个 (" Content-Length" / " Transfer-Encoding: chunked") 都不存在,则“连接结束”表示请求结束。

大多数 HTTP 请求都是没有正文的 GET 请求。但是,使用主体模拟请求对于适当地强调代理代码和测试处理此类请求的各种钩子很重要。大多数带有正文的 HTTP 请求使用 POST 或 PUT 请求方法。

有关 HttpRequestBody 的更多信息 - 请参阅


推荐阅读