2013-02-21 27 views
1

正如標題我想擴展ApiContoller類,包括一些自定義屬性和輔助方法,但每當我試圖使用它的控制器我得到的消息Multiple actions were found that match the request:擴展ApiController

示例代碼:

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,但如果可能的話,我想避免這種方法。

任何想法?

回答

3

您可以使用[NonAction]屬性:

public class ExtendedApiController : ApiController { 

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

} 

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

+0

修好了!雖然簽名不符合Get/Post/Put/Delete等標準,但我不會認爲它會匹配該方法。 – David 2013-02-21 13:13:25

1

ASP NET WebAPI在配置之前使用約定,因此它試圖找到以Get...爲GET請求開頭的方法,Post...針對POST請求開始的方法等等,用於PUT和DELETE。

因此,也許你有2種方法begining通過Get...Post...Put...Delete...

+0

不,這是一個新鮮的項目,到目前爲止我只有1個控制器(除了ExtendedController)。我想知道,如果因爲繼承鏈是深層次的3級,它可能是原因,一些內部反映已被絆倒。 – David 2013-02-21 12:30:24