【问题标题】:Azure Function HTTP request body mapping does not work when publishedAzure Function HTTP 请求正文映射在发布时不起作用
【发布时间】:2019-05-16 17:47:06
【问题描述】:

我有一个 Azure 函数,声明如下:

 public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = "GetServicesByEanCode/")]GetServicesByEanCode_Request httpReq, ILogger log)

请求对象定义为

   [DataContract]
    public class GetServicesByEanCode_Request
    {
        [DataMember(IsRequired = true)]
        public string EanCode { get; set; }
    }

如果我在本地运行我的函数,具有以下主体的 HTTP 请求将完美运行,并且 httpReq 将填充“eancode”的值:

{ "eancode":"123"}

但是,在我将函数发布到 Azure 函数后,请求对象根本没有被填充,使用相同的请求正文。

如果我在请求中将“eancode”设置为参数,它适用于(本地和已发布)。但我不明白为什么它只映射在这两种情况之一。我可能会在这里遗漏什么?

【问题讨论】:

    标签: c# azure azure-functions


    【解决方案1】:

    我重现了你的问题。

    部署到天蓝色后,使用请求正文时出现404错误。然后我选择Http Method为Get(虽然您已在本地设置get方法但部署后为null,因此您需要选择它)并测试再次,它现在可以正常工作了。

    【讨论】:

    • 我没有得到 404,只是一个未填充的属性:/ 启用了远程调试,并且对本地与已发布函数的相同请求得到不同的结果。如果我在请求正文中输入任何值,例如{ "eancode":"foo bar" },我本地实例的响应是“No service found with EAN code 'foo bar'”,而发布版本的响应是“No service found with EAN code ''”。我已经通过使用远程调试和断点验证了这一点。
    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2014-11-03
    • 2019-08-21
    相关资源
    最近更新 更多