将包含带有连字符的Header属性的请求绑定到.Net Core 3.1 API



引用.Net core 3.0 API不';在使用连字符绑定属性时,我尝试在.NET Core 3.1中使用代码接受标头中的连字符属性名称(测试属性(,并将其转换为类的内部名称(testProperty(。我使用的是System.Text.Json。这是我的代码:

[HttpPut]
public string Put([FromHeader]PostModel header)
{
return header.testProperty;
}
public class PostModel
{
[JsonPropertyName("test-property")]
[FromHeader]
[Required] 
public string testProperty { get; set; }
}

当我调用头中具有属性test-property的API时,它返回验证错误";testProperty字段是必需的"当我将头改为传入testproperty而不是test-property时,API运行良好,并返回always-interest字符串";你好世界";。我觉得我错过了一些显而易见的东西,但我一辈子都想不出是什么。

JsonPropertyName指定序列化和反序列化时JSON中存在的属性名称。如果您使用json从body发送数据,它可以很好地工作。你所做的是从头开始的,你需要像下面这样的改变:

public class PostModel
{
[JsonPropertyName("test-property")]
[FromHeader(Name = "test-property")]
[Required]
public string testProperty { get; set; }
}