C# 分析web api终结点中的HTTP POST请求正文时出错
我有一个带有POST端点的Web API项目。我试图用一个带有JSON主体的请求命中这个端点,并将其转换为该端点的函数参数。但是,我的函数中的参数始终为空 后功能终结点:C# 分析web api终结点中的HTTP POST请求正文时出错,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,我有一个带有POST端点的Web API项目。我试图用一个带有JSON主体的请求命中这个端点,并将其转换为该端点的函数参数。但是,我的函数中的参数始终为空 后功能终结点: [HttpPost] [Route("PostMedia/")] public void UpdateMedia([FromBody] Media value) { string[] file = Directory.GetFiles(this.config.Value.JSONFileDirectory, value
[HttpPost]
[Route("PostMedia/")]
public void UpdateMedia([FromBody] Media value)
{
string[] file = Directory.GetFiles(this.config.Value.JSONFileDirectory, value.Id.ToString() + ".json");
if (file.Length == 1)
{
try
{
using (StreamReader reader = new StreamReader(file[0]))
{
string json = reader.ReadToEnd();
}
}
catch (Exception e)
{
throw new Exception("Could not parse file JSON for ID: " + value.Id.ToString(), e);
}
}
}
我的媒体模型类及其CatalogBase父类:
public class Media : CatalogueBase
{
MediaType type;
MediaRating rating;
string genre;
public MediaType Type { get => type; set => type = value; }
public MediaRating Rating { get => rating; set => rating = value; }
public string Genre { get => genre; set => genre = value; }
}
public abstract class CatalogueBase
{
string name;
string description;
int id;
public string Name { get => name; set => name = value; }
public string Description { get => description; set => description = value; }
public int Id { get => id; set => id = value; }
}
JSON请求我正在使用我的API:
{
"Media" : {
"Id": 1,
"Name": "Gettysburg",
"Description": "A movie set during the American Civil War",
"Type": "Movie",
"Rating": "Excellent",
"Genre" : "Drama"
}
}
发生的情况是,我正在命中我的端点,但是(Media value)参数始终是null/默认值。它实际上并没有用postman的POST请求主体中的数据填充任何内容。知道为什么我的模型类没有被框架填充吗
这是调试器中模型参数的外观:
模型绑定器无法将传入的JSON映射到类定义 从JSON中删除根对象以匹配对象模型
{
"Id": 1,
"Name": "Gettysburg",
"Description": "A movie set during the American Civil War",
"Type": "Movie",
"Rating": "Excellent",
"Genre" : "Drama"
}
或者更新所需模型以匹配发送的JSON
public class MediaUpdateModel {
public Media Media { get; set; }
}
并将其用于行动
public void UpdateMedia([FromBody] MediaUpdateModel value) {
var media = value.Media;
//...
}
参考是否发送“内容类型:应用程序/json”?是的。我补充说,因为我得到了415个错误,甚至没有达到我的终点。