【发布时间】:2020-02-10 11:47:05
【问题描述】:
我想使用 Azure Functions 并像在典型的 ASP.NET WebAPI 项目中那样自动解析模型。 所以,我写:
[FunctionName("StartJob")]
public async Task<IActionResult> Start(
[HttpTrigger(AuthorizationLevel.Function, "Post", Route = "v1/job")] StartJobRequestModel model)
{
this.logger.LogInformation("StartJob function has been entered.");
}
public class StartJobRequestModel
{
[JsonRequired]
public string TenantId { get; set; }
....
}
因此,您希望,如果您不提供必需的 TenantId 字段,基于此代码,在底层 JSON 反序列化期间,程序甚至不应该进入函数体。
但它的作用是:
记录 json 反序列化错误
[2/10/2020 10:59:14 AM] 请求成功匹配名称为“StartJob”和模板为“api/v1/job”的路由
[2/10/2020 10:59:14 AM] JSON 输入格式化程序引发异常。
[2020 年 2 月 10 日上午 10:59:14] Newtonsoft.Json:在 JSON 中找不到必需的属性“tenantId”。路径 '',第 16 行,位置 1。
[2/10/2020 10:59:14 AM] 执行“StartJob”(原因='此函数已通过主机 API 以编程方式调用。',Id=22be443b-9a70-4570-8a30-1cc9b8062f1b)
[2/10/2020 10:59:16 AM] StartJob 函数已进入。
在收到非预期模型后继续工作,没有任何意外异常问题...
问题是:
- 这是正常行为吗?
- 也许我需要在项目配置或 Startup.cs 中指定一些特定参数?
- 微软的错误?
- ???
- 不盈利?
谢谢。
【问题讨论】:
-
您找到解决方案了吗?我目前正面临完全相同的问题。
-
@Nfourx 嗨,我使用 FluentValidator 并完全控制它......我将来可能会测试新的 Azure Functions 5,但我认为它不会得到解决。虽然,在新函数中,您已经可以编写自己的中间件并自己解析这些东西......
标签: c# json json.net azure-functions