C# 从API控制器调用自定义方法

C# 从API控制器调用自定义方法,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我想在我的Web API控制器中创建一个自定义方法,这样就不必返回我可以传入参数的所有数据,例如,我的控制器名为StandingController,我想创建一个名为GetStandingBySeason(string season)的方法。我已将我的WebApiConfig更改为如下所示: config.Routes.MapHttpRoute( "DefaultApi", "api/{controller}/{id}",

我想在我的Web API控制器中创建一个自定义方法,这样就不必返回我可以传入参数的所有数据,例如,我的控制器名为StandingController,我想创建一个名为GetStandingBySeason(string season)的方法。我已将我的WebApiConfig更改为如下所示:

config.Routes.MapHttpRoute(
            "DefaultApi",
            "api/{controller}/{id}",
            new { id = RouteParameter.Optional }
        );

        config.Routes.MapHttpRoute(
            "DefaultApiWithAction",
            "api/{controller}/{action}/{id}",
            new { id = RouteParameter.Optional }
        );
$.getJSON("/api/standing/GetStandingsBySeason/2011", self.standings);
以下是我的控制器中的方法:

public IEnumerable<StandingDTO> GetStandingsBySeason(string season)
    {
        return _repository.GetStandingsBySeason(season).Select(Mapper.Map<StandingDTO>);
    }

但是这个方法从来没有被调用过,有人能解释一下我的错误吗?

看起来您的配置是错误的:您的模板是错误的

"api/{controller}/{action}/{id}"
但是该方法获取名为seasure的参数,因此您可以按如下方式调用它:

$.getJSON("/api/standing/GetStandingsBySeason?season=2011", self.standings);
或者,您可以将管线模板修改为

"api/{controller}/{action}/{season}"