Rest 如何发布到Web API 2 OData控制器

Rest 如何发布到Web API 2 OData控制器,rest,asp.net-web-api,asp.net-web-api2,postman,odata4j,Rest,Asp.net Web Api,Asp.net Web Api2,Postman,Odata4j,我创建了一个Web API 2项目,并按照以下步骤配置了OData4控制器: 但是,每当我尝试使用Postman进行简单的POST(使用JSON主体创建实体)时,我都会返回以下错误: 请求的资源不支持http方法“POST” 控制器中的POST操作如下所示: public async Task<IHttpActionResult> Post(Product product) { if(!ModelState.IsValid) {

我创建了一个Web API 2项目,并按照以下步骤配置了OData4控制器:

但是,每当我尝试使用Postman进行简单的POST(使用JSON主体创建实体)时,我都会返回以下错误:

请求的资源不支持http方法“POST”

控制器中的POST操作如下所示:

public async Task<IHttpActionResult> Post(Product product)
    {
        if(!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        db.Products.Add(product);
        await db.SaveChangesAsync();
        return Created(product);
    }
我在请求中还包括以下标题:

OData版本:4.0

OData最大版本:4.0

内容类型:application/json

我是不是遗漏了什么


更新:解决了问题。我使用了一个不正确的URI。

没有多少信息可以继续:

我怀疑你在相关控制器上没有PostMethod

除此之外,还有一些其他需要考虑的事情:

  • OData区分大小写
  • 您缺少必需的属性
  • 数据类型错误(示例项目中的Id为整数,看起来像项目中的字符串,价格应为十进制而不是字符串,…)

发布对象时,HTTP响应代码是什么(如果上面没有帮助)。(使用像fiddler这样的工具)。提示:如果您的http响应是“错误的请求”,则您的数据可能无效,无法继续操作。

我在帖子中错误地使用了:/Products而不是:/Products

感谢您指出这一点,我在示例中使用了随机数据。我的错。我发现了问题所在,我的URI不正确。
{  
"Id":"lewisblack",
"Name":"Lewis",
"Price":"Black",
"Category":"Category 1"
}