扩展ApiController

时间:2013-02-21 12:14:40

标签: c# asp.net-web-api

正如标题所示,我想扩展ApiContoller类以包含一些自定义属性和辅助方法,但每当我尝试将它用于控制器时,我都会收到消息Multiple actions were found that match the request:

示例代码:

public class ExtendedApiController : ApiController {
    public string SomeHelper() {
    ....
    }
}

public class AccountController : ExtendedApiContoller {
    public void Post (ModelObject obj){
        string x = SomeHelper();
        ...Bunch of business logic
    }
}

Web Api似乎不喜欢我出于某种原因这样做,或者我需要覆盖其他一些基本方法。我能看到的唯一另一个选择是加强ApiContoller的扩展方法,但如果可能的话,我想避免这种情况。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用[NonAction]属性:

public class ExtendedApiController : ApiController {

   [NonAction] 
   public string SomeHelper() {
    ....
    }

}

更多信息here, at the bottom of the page

答案 1 :(得分:1)

ASP NET WebAPI在配置之前使用约定,因此它尝试查找以Get...开头的GET请求,Post...开始POST请求等等的方法,用于PUT和DELETE。

所以也许有两种方法开始于Get...Post...Put...Delete...