.net 实现子类方法的问题

.net 实现子类方法的问题,.net,ajax,api,odata,odatacontroller,.net,Ajax,Api,Odata,Odatacontroller,所以我有点问题。。。问题是,我有一个基类,它实现了所有GET/POST/PUT/DELETE,它是一个泛型类,所以基本上,我更新的任何实体都会通过它,然后我有一个实现该类的实体类 public virtual async Task<IHttpActionResult> Put([FromODataUri] TKey key) public虚拟异步任务Put([FromODataUri]TKey) 问题是,对于其中一个实体,我想在更新数据库之前实现额外的逻辑,所以我认为我只需要在子

所以我有点问题。。。问题是,我有一个基类,它实现了所有GET/POST/PUT/DELETE,它是一个泛型类,所以基本上,我更新的任何实体都会通过它,然后我有一个实现该类的实体类

public virtual async Task<IHttpActionResult> Put([FromODataUri] TKey key)
public虚拟异步任务Put([FromODataUri]TKey)
问题是,对于其中一个实体,我想在更新数据库之前实现额外的逻辑,所以我认为我只需要在子类上实现它,然后在新的逻辑之后,我调用基类方法,这应该可以实现,所以我创建了一个重载方法

public override Task<IHttpActionResult> Put(int key){
     //NEW LOGIC
     return base.Put(key);
}
公共覆盖任务Put(int键){
//新逻辑
返回基。放置(键);
}
我遇到的问题是,当我从客户机发出请求时,如果我没有实现这个新方法,它可以正常工作,并调用base-clase方法,实体被更新,但在我添加了这个之后,使用完全相同的ajax请求,它会返回400个响应。。。有人能帮我弄清楚发生了什么事吗?非常感谢:)

这是从

1.4.3更新实体 . . . 服务还可以支持PUT,但应注意客户端可能事先不知道的往返属性(如打开或添加的属性,或元数据中未指定的属性)中的数据丢失可能性支持PUT的服务必须用请求正文中指定的值替换结构属性的所有值

我向您保证,OData无法解析您提供的路由,因为它正在以模型为参数查找
PUT
,然后,您还可以使用密钥。因此,您会得到错误#400

我甚至不知道使用
ODataRouteAttribute是否有帮助

1.4.3更新实体 . . . 服务还可以支持PUT,但应注意客户端可能事先不知道的往返属性(如打开或添加的属性,或元数据中未指定的属性)中的数据丢失可能性支持PUT的服务必须用请求正文中指定的值替换结构属性的所有值

我向您保证,OData无法解析您提供的路由,因为它正在以模型为参数查找
PUT
,然后,您还可以使用密钥。因此,您会得到错误#400


我不知道,即使使用
ODataRouteAttribute
是否会有帮助

,我认为这本质上是错误的,不符合Odataprotocol<代码>放置
必须将模型作为参数。或者三角洲。不能将简单的基元类型放入。因此,覆盖方法隐藏了基本方法,但Odata route builder找不到它。因此,我认为这本质上是错误的,不符合Odataprotocol<代码>放置必须将模型作为参数。或者三角洲。不能将简单的基元类型放入。因此,覆盖方法隐藏了基本方法,但Odata route builder找不到它。因此400