C# Azure函数在C中的模型绑定问题#
我想使用Azure函数,并像典型的ASP.NET WebAPI项目那样自动解析模型。 因此,我写道:C# Azure函数在C中的模型绑定问题#,c#,json,json.net,azure-functions,C#,Json,Json.net,Azure Functions,我想使用Azure函数,并像典型的ASP.NET WebAPI项目那样自动解析模型。 因此,我写道: [FunctionName("StartJob")] public async Task<IActionResult> Start( [HttpTrigger(AuthorizationLevel.Function, "Post", Route = "v1/job")] StartJobRequestModel mo
[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; }
....
}
[FunctionName(“StartJob”)]
公共异步任务启动(
[HttpTrigger(AuthorizationLevel.Function,“Post”,Route=“v1/job”)]StartJobRequestModel模型)
{
此.logger.LogInformation(“已输入StartJob函数”);
}
公共类StartJobRequestModel
{
[JsonRequired]
公共字符串TenantId{get;set;}
....
}
因此,如果您不提供requiredTenantId
字段,那么在后台JSON反序列化过程中,基于此代码,程序甚至不应该进入函数体。
但它所做的是:
日志json反序列化错误
[2/10/2020 10:59:14 AM]请求成功匹配名为“StartJob”和模板为“api/v1/job”的路由
[2/10/2020 10:59:14 AM]JSON输入格式化程序引发异常
[2/10/2020 10:59:14 AM]Newtonsoft.Json:在Json中找不到必需的属性“tenantId”。路径“”,第16行,位置1
[2/10/2020 10:59:14 AM]正在执行“StartJob”(Reason='此函数是通过主机API编程调用的。',Id=22be443b-9a70-4570-8a30-1cc9b8062f1b)
[2/10/2020 10:59:16 AM]已输入StartJob功能
并在收到不期望的模型后继续工作,不会出现任何问题和意外异常
问题是:
谢谢。不确定您使用的是哪个版本的NewtonSoft.Json,但通常我使用的是JsonProperty属性,而不是JsonRequired属性,它可以按预期工作:
public class StartJobRequestModel
{
[JsonProperty(Required = Required.Always)]
public string TenantId { get; set; }
....
}
不确定您使用的是哪个版本的NewtonSoft.Json,但通常我使用的是JsonProperty属性,而不是JsonRequired属性,它可以按预期工作:
public class StartJobRequestModel
{
[JsonProperty(Required = Required.Always)]
public string TenantId { get; set; }
....
}
您还可以使用[JsonProperty(Required=Required.DisallowNull)],它与JsonRequired不一样吗?不过,对我来说也是一样的…版本是Sdk使用的。函数-11.0.2[JsonProperty(Required=Required.DisallowNull)]-当您不提供属性时,这个版本甚至不会记录错误…您也可以使用[JsonProperty(Required=Required.DisallowNull)],它与JsonRequired不一样吗?对我来说也是一样的,不过…Sdk.Functions使用的版本-11.0.2[JsonProperty(Required=Required.DisallowNull)]-当您不提供属性时,这个版本甚至不会记录错误。。。