Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分析web api终结点中的HTTP POST请求正文时出错_C#_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 分析web api终结点中的HTTP POST请求正文时出错

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

我有一个带有POST端点的Web API项目。我试图用一个带有JSON主体的请求命中这个端点,并将其转换为该端点的函数参数。但是,我的函数中的参数始终为空

后功能终结点:

[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个错误,甚至没有达到我的终点。