Asp.net OData更新控制器引发415不支持的媒体类型错误

Asp.net OData更新控制器引发415不支持的媒体类型错误,asp.net,rest,asp.net-web-api,odata,Asp.net,Rest,Asp.net Web Api,Odata,我有一个OData控制器,具有“Put”和“Post”操作。当我发布内容类型:application/json时,我得到一个带有“415:unsupported media Type”的HttpResponseException。控制器不会引发异常的唯一内容类型是应用程序/x-www-urlformencoded。但这不是我想要接受的内容类型 为什么odata控制器不接受application/json?我在控制器的配置中没有看到任何限制接受的内容类型的内容 我记得过去也有同样的代码。苏姆廷似乎

我有一个OData控制器,具有“Put”和“Post”操作。当我发布内容类型:application/json时,我得到一个带有“415:unsupported media Type”的HttpResponseException。控制器不会引发异常的唯一内容类型是应用程序/x-www-urlformencoded。但这不是我想要接受的内容类型

为什么odata控制器不接受application/json?我在控制器的配置中没有看到任何限制接受的内容类型的内容


我记得过去也有同样的代码。苏姆廷似乎已经倒退了。我应该看哪里?

感觉您期望在主体中的类型(即在您的操作中声明为参数)不是您服务的EDM模型的一部分

比如说,

HttpResponseMessage Post(Customer customer)

若客户不是EDM模型的一部分,那个么WebAPI将抛出415。这是因为ODataController只有ODataMediaTypeFormatter,ODataMediaTypeFormatter只支持读取模型中声明的类型。

可能就是这样!非常感谢!我试图使用ODataModelBuilder.EntitySet方法将类型添加到模型中,但得到以下模型状态错误,实体类型“CustomerUpdate”与提供的实体集“Container.Customer”的基类型“CustomerData”不兼容。当为OData提要或条目读取器指定实体类型时,该实体类型必须与指定实体集的基本类型相同或为其子类型。“我已经为客户控制器指定了CustomerTo类型,现在希望添加CustomerUpdate类型(用于POST)。