如何使用 Azure Functions 解析表单数据

2023-12-21

我正在尝试在 Azure 函数中获取表单数据。

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");
    NameValueCollection col = req.Content.ReadAsFormDataAsync().Result;   
    return req.CreateResponse(HttpStatusCode.OK, "OK");
}

我收到以下错误:

执行函数时出现异常:System.Net.Http.Formatting:没有 MediaTypeFormatter 可用于从媒体类型为“multipart/form-data”的内容中读取类型为“FormDataCollection”的对象。

我正在尝试通过 SendGrid 解析入站电子邮件,如此处所述。https://sendgrid.com/docs/Classroom/Basics/Inbound_Parse_Webhook/setting_up_the_inbound_parse_webhook.html https://sendgrid.com/docs/Classroom/Basics/Inbound_Parse_Webhook/setting_up_the_inbound_parse_webhook.html

传入的请求看起来正确。

--xYzZY 内容处置:表单数据;名称=“附件”

0 --xYzZY 内容处置:表单数据;名称=“文本”

你好世界 --xYzZY 内容处置:表单数据;名称=“主题”

主题 --xYzZY 内容处置:表单数据;名称=“至”


由于似乎没有一个好的方法来转换IFormCollection对于自定义模型/视图模型类型,我为此编写了一个扩展方法。

遗憾的是,Azure Functions v2/v3 尚不支持开箱即用。

public static class FormCollectionExtensions
{
    /// <summary>
    /// Attempts to bind a form collection to a model of type <typeparamref name="T" />.
    /// </summary>
    /// <typeparam name="T">The model type. Must have a public parameterless constructor.</typeparam>
    /// <param name="form">The form data to bind.</param>
    /// <returns>A new instance of type <typeparamref name="T" /> containing the form data.</returns>
    public static T BindToModel<T>(this IFormCollection form) where T : new()
    {
        var props = typeof(T).GetProperties();
        var instance = Activator.CreateInstance<T>();
        var formKeyMap = form.Keys.ToDictionary(k => k.ToUpper(), k => k);

        foreach (var p in props)
        {
            if (p.CanWrite && formKeyMap.ContainsKey(p.Name.ToUpper()))
            {
                p.SetValue(instance, form[formKeyMap[p.Name.ToUpper()]].FirstOrDefault());
            }
        }

        return instance;
    }
}

这将尝试绑定一个IFormCollection到您传入的任何模型类型。属性名称不区分大小写(即您可以映射firstname=Bob to public string FirstName { get; set; }.

Usage:

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

如何使用 Azure Functions 解析表单数据 的相关文章

  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • 在 LINQ 查询中进行转换

    是否可以在 LINQ 查询中进行强制转换 为了编译器的缘故 下面的代码并不糟糕 但最好将其放入一个查询中 Content content dataStore RootControl as Controls Content List
  • 并行运行多个任务

    我有一个代理列表 每个代理都会访问不同的站点并从站点中提取所需的数据 目前它一次只做一个 但我希望同时运行 10 20 个任务 这样它就可以一次性从 20 个站点下载 而不是只下载一个 这是我目前正在做的事情 private async T
  • 每个元素的 asp.net Web 表单自定义错误消息

    我创建了一个 Web 应用程序 表单 以及后端 SQL 插入和查询 目前我正在显示所有用户错误消息 div style padding 1em div
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 维护 VS Test Project 中单元测试方法之间的上下文

    我想按顺序运行以下单元测试 使用随机数字的名称 密码等创建新客户 检索刚刚创建的客户并断言其属性包含相同的随机数 对同一用户调用 ForgotPassword 函数 并使用相同的随机数作为用户名 清楚地看到 我需要生成一次随机数 并在 3
  • 大量互斥体对性能的影响

    假设我有一个包含 1 000 000 个元素的数组 以及多个工作线程 每个线程都操作该数组中的数据 工作线程可能会使用新数据更新已填充的元素 但每个操作仅限于单个数组元素 并且独立于任何其他元素的值 使用单个互斥锁来保护整个数组显然会导致高
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • 当我尝试传递临时地址作为参数时,它是一个 UB 吗?

    对于以下 C 代码 include
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 异步/等待 - 是*并发*吗?

    我一直在考虑 C 5 中新的异步内容 并且出现了一个特殊问题 据我了解 await关键字是一个简洁的编译器技巧 语法糖来实现连续传递 http en wikipedia org wiki Continuation passing style
  • 稀疏矩阵超定线性方程组c/c++库

    我需要一个库来解决 Ax b 系统 其中 A 是一个非对称稀疏矩阵 每行有 8 个条目 而且可能很大 我认为实现双共轭梯度的库应该没问题 但我找不到一个有效的库 我尝试过 iml 但 iml sparselib 包中缺少一些标头 有小费吗
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que

随机推荐

  • 攻击者能否破解 iOS 钥匙串和数据保护加密? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个 iOS 应用程序 它
  • Linux中进程的空闲时间

    我需要计算Linux中进程的CPU使用率 用户模式 系统模式 空闲时间 我可以使用以下方法计算用户和系统模式下的使用情况utime and stime值来自 proc PID stat 但我没有发现任何与空闲时间相关的内容 我知道我可以从中
  • .Net 5 后台服务的 MSI 安装程序

    我有一个 Net 5 控制台应用程序 我试图将其作为 Windows 服务运行 我已阅读有关如何执行此操作的所有在线文章并成功完成 即 使用BackgroundService 问题是 我想要一个 MSI 安装程序来部署它 并且我读过的有关在
  • 在 Visual Basic 中打印(多)维数组

    有没有一种简单的方法可以将可能是多维的数组打印到 VB NET 中的控制台以进行调试 即仅检查数组的内容是否正确 来自 Objective C 背景NSLog函数打印格式相当良好的输出 例如一维数组的以下内容 myArray 0 gt He
  • 了解 applicationSignificantTimeChange:

    我发现有时我的应用程序 Cocos2d 游戏 在显着的时间变化后会出现 错误 例如 case 1 当应用程序进入后台并在几分钟后重新启动它时 我可以看到加载图像然后应用程序 游戏恢复 case 2 当应用程序进入后台并在很长一段时间后更改应
  • __NSAutoreleaseNoPool():类 General 自动释放的对象 0x753c2f0,没有适当的池 - 只是泄漏

    我已经有一段时间没有注意到我的控制台输出了 我突然注意到很多奇怪的错误 NSAutoreleaseNoPool Object 0x753c2f0 of class General autoreleased with no pool in p
  • 向行值添加尾随零以确保有 10 位数字

    如果我有一个数据帧 其中每行中的最大数字为 10 但由于尾随零已被截断 某些 ID 小于 10 那么如何在 python 中添加尾随零以确保每行中有 10 位数字 ID 1234567689 123456768 12345676 ID 12
  • Magento:使用分组子句过滤集合

    我想用分组子句过滤集合 在 SQL 中 这看起来像 SELECT FROM my table WHERE col1 x AND col2 y OR col3 z 我如何将其 翻译 为过滤集合 gt addFieldToFilter Than
  • Jenkins 无法使用 SVN 凭据或下载新插件/新版本

    谁能建议如何解决这两个问题 无法升级Jenkins和SVN插件 无法连接到svn 我正在 Windows 64 位机器上设置 Jenkins 它被配置为作为 Windows 服务运行 我们在 Windows 7 64 位操作系统上运行它 詹
  • 如何在Springboot Restcontroller中使用PUT方法?

    正在使用 Spring boot 开发一个应用程序 我尝试了所有表示动词 如 GET POST DELETE 它们也都工作正常 使用 PUT 方法 Spring Boot 不支持 我是否需要添加任何新配置 Put方法仅适用于没有任何参数的请
  • 模型中包含的辅助方法会产生“未定义的局部变量或方法‘config’”错误

    我有一个非常复杂的辅助方法 也需要在模型中 我已经通过在模型中包含一些助手来完成此操作 但相同的方法不适用于 Rails 3 0 7 module ContentsHelper def content teaser record it us
  • 为什么转换为单击一次应用程序或exe后不进行日志记录?

    我创建了一个控制台应用程序 其中使用 log4net 正确完成日志记录 但是在发布我的应用程序 单击一次应用程序或 exe 后 即使我的应用程序工作正常 日志记录也无法正常工作 有什么方法可以让 log4net 在我的最终点击应用程序中工作
  • Linux邮件添加内容类型标头不起作用

    我在用mail从我的 Linux 系统发送邮件的命令 我遇到的问题是邮件的内容类型始终为Content Type text plain charset us ascii 我正在发送 html 内容 它显示为纯文本 这就是我尝试过的 1 bo
  • 纯文本文档的字符编码未声明 - mootool 脚本

    我刚刚注意到有一个warning当我在 FireFox 浏览器上查看 mootool js 脚本时 会弹出消息 警告消息是 纯文本文档的字符编码未声明 文档在某些浏览器中会呈现乱码 如果文档包含来自外部的字符 则配置 US ASCII 范围
  • 在 Sonata 管理列表中使用自定义列

    我使用 Symfony 4 1 创建了一个项目 并安装了 Sonata Admin Bundle 在我的类别列表中 我尝试添加与类别字段不相关的列 所以我做了 Admin CategoryAdmin php protected functi
  • 类成员和显式堆栈/堆分配

    假设我们有 4 个类 如下所示 class A public A void m B private B m B class B public B void m i 1 private int m i class C public C voi
  • TextView文本缩小到给定宽度

    我的活动中有一个文本视图字段 其字体大小为 16 其文本是通过代码设置的 假设如果我有一个大文本 它应该缩小该数据 即字体大小减小 而不是转到下一行 我该怎么做
  • Visual Basic 中的屏幕尺寸

    如何在 Visual Basic 中访问屏幕尺寸 我在网上查看过 它说要使用 Screen width 和 Screen length 但它无法识别这些属性 有什么提示吗 在VB中你可以使用Screen Width and Screen H
  • pl/sql - 集合可以循环遍历列名吗?

    以下代码的输出是 LAT MISC SID NO MIN LENGTH 1 2 1 1 MAX LENGTH 6 6 4 2 输出正如我所期望的那样 但是无论如何都可以使用索引 即j 循环遍历列而不是执行RESULTS I 最长长度 结果
  • 如何使用 Azure Functions 解析表单数据

    我正在尝试在 Azure 函数中获取表单数据 public static async Task