无法从 Web api POST 读取正文数据

2024-05-09

我正在尝试从新的 Asp.Net Web Api 中的请求中提取一些数据。我有一个像这样的处理程序设置:

public class MyTestHandler : DelegatingHandler
{
    protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
    {
        if (request.Content.IsFormData())
        {
            request.Content.ReadAsStreamAsync().ContinueWith(x => {
                var result = "";
                using (var sr = new StreamReader(x.Result))
                {
                    result = sr.ReadToEnd();
                }
                Console.Write(result);
            });
        }

        return base.SendAsync(request, cancellationToken);
    }
}

这是我的http请求:

POST http://127.0.0.1/test HTTP/1.1
Connection: Keep-Alive
Content-Length: 29
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
Host: 127.0.0.1

my_property=my_value

问题是,无论我如何尝试从中读取信息request.Content它总是空的。我试过了

request.Content.ReadAsStreamAsync
request.Content.ReadAsFormDataAsync
request.Content.ReadAs<FormDataCollection>

    [HttpGet,HttpPost]
    public string Index([FromBody]string my_property)
    {
        //my_property == null
        return "Test";
    }

如果有效的话就没有。我无法从体内取出数据。我在 Windows 7 上的 IIS 中托管并使用 Fiddler 提交请求。我究竟做错了什么?


问题是,使用 Web Api 时,正文只能读取一次。我正在运行一个 HTTP 模块,该模块正在记录请求的所有详细信息并读取正文。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从 Web api POST 读取正文数据 的相关文章

随机推荐

  • Ninject 绑定所有实现相同接口的类

    我有一个接口类 public interface IStartUpTask bool IsEnabled get void Configure 我有多个类实现相同的接口 其中一个类如下所示 public class Log4NetStart
  • log4net 控制台应用程序未登录发布

    我有一个使用 log4net 的控制台应用程序 通过温莎城堡 当我调试时 一切都很好地记录到控制台 但是当我发布并运行应用程序时 没有记录任何内容 我的 log4net 配置位于单独的文件 log4net config 中 我认为它没有找到
  • SDK 管理器中缺少 Google Play 服务

    我想在我的应用程序中使用 Google 地图 我想在 SDK 管理器中安装 Google Play 服务 但是当我转到 SDK 管理器时 我没有看到 Google Play 服务 为什么 我该如何安装这个 我可以独立于 SDK Manage
  • 如何清除整个终端(PowerShell)

    我有一个问题 在powershell中使用clear或cls命令仅清除终端的可见部分 我想知道如何清除整个终端 顺便说一句 我使用 VSCode tl dr 问题是关于清零的both屏幕和回滚缓冲区 in the 综合终端 of 视觉工作室
  • /proc/PID 文件格式

    我想从中检索一些流程信息 proc目录 我的问题如下 中的文件是否有标准格式 proc PID 例如 有这个proc PID status文件与Name t ProcName在第一行 我可以在其他地方用空格代替这个文件吗 t或者类似的东西
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • 从 org.w3c.dom.Node 获取 Xpath

    我可以从 org w3c dom Node 获取完整的 xpath 吗 假设当前节点指向 xml 文档中间的某个位置 我想提取该元素的 xpath 我正在寻找的输出 xpath 是 parent child1 chiild2 child3
  • 在 Android 5 上支持 BLE 外设角色的芯片组 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Android 5 0 Lollipop 引入的新 BLE 外设模式将不会在 Nexus 4 5 或 7 上启用 https code
  • 调用 Perl 子程序时使用 & 符号和括号

    usr bin perl sub t print in t n print n s sub s print in s n print n t 1 2 print out n print n Output in t 1 2 in s 1 2
  • Atom“自动完成”不起作用

    因此 当您安装 Atom 时 autocomplete 会随其一起提供 并且默认情况下处于启用状态 当我编写代码时 什么也没有显示 为什么 是否需要配置任何文件才能正常工作 In autocomplete plus settings pag
  • org.hibernate.MappingException:没有 JDBC 类型的方言映射:1111

    我使用的是 postgres v8 3 它的列类型为 XML DDL 看起来像这样 CREATE TABLE contact ID INTEGER NOT NULL NAME VARCHAR NOT NULL Details XML 在映射
  • 计算属性应该在模型或控制器中声明吗?

    具有以下用户模型 Sks User DS Model extend firstName DS attr string lastName DS attr string fullName 计算属性应该在哪里声明 fullName Ember c
  • 如何从对应的数组值中获取数组键?

    您可以轻松地通过其键获取数组值 如下所示 value array key 但如果我有该值并且想要它的密钥怎么办 获得它的最佳方式是什么 你可以使用array search https www php net manual en functi
  • 如何理顺 Laravel Blade @extends 的执行顺序?

    In 我尝试找到一种通过引用刀片 include来传递变量的方法 https stackoverflow com questions 25437939 how to pass variables by reference to includ
  • 从 Wikipedia XML 转储获取静态 HTML 文件

    我希望能够从巨大的 即使是压缩的 英语维基百科 XML 转储文件中获取相对最新的静态 HTML 文件enwiki 最新 pages articles xml bz2 http download wikimedia org enwiki la
  • 上传的白名单或黑名单文件扩展名?

    我正在制作一个新闻通讯编辑器 它将允许文件上传 新闻通讯的发件人可以将文件上传到将在电子邮件中链接到的服务器 该站点的设置使得只有 do URI 实际由 servlet 执行 处理 因此不会有太大的安全风险 但有人告诉我将 jsp php
  • 如何在不实例化一个类的情况下检查它是否继承了另一个类? [复制]

    这个问题在这里已经有答案了 假设我有一个如下所示的类 class Derived some inheritance stuff here 我想在我的代码中检查类似的内容 Derived is SomeType 但看起来像is运算符需要 De
  • Rails 3 - 如何完全避免数据库?

    我尝试在没有任何数据库后端的情况下使用 Rails 3 但当我尝试访问页面时它仍然坚持要求 sqlite3 gem 并抛出错误no such file to load sqlite3 尽管应用程序中没有代码需要 sqlite 但我将 dat
  • S3 存储桶可以生成自己的对象键名称吗?

    我正在将 Amazon API Gateway 配置为 S3 存储桶的代理 理想情况下 我希望客户端能够将文件发布到存储桶 让 S3 为其分配一个文件名 然后在响应中返回该名称 我不想让客户端能够指定文件名 这可能吗 设置代理的文档根本没有
  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst