Web Api 2在运行时动态设置到ApiController方法的路由

时间:2014-07-21 10:23:05

标签: c# dependency-injection asp.net-web-api2 asp.net-web-api-routing

我想动态地将路径设置为ApiController中的方法。下面显示了我的TokenController:

public class TokenController : ApiController
{
    [Route("api/token/{grantType}")]
    [RequireHttps]
    public IHttpActionResult Post(string grantType)
    {}
}

我正在考虑使用依赖注入,如下所示:

public class TokenController : ApiController
{
    public TokenController(ITokenService tokenService)
    {   
        //configure route "api/token/{grantType}" using tokenService?
    }

    [Route("api/token/{grantType}")]
    [RequireHttps]
    public IHttpActionResult Post(string grantType)
    {}
}

或者我是否需要使用HttpConfiguration对象在 App_Start 中执行此操作?

我该怎么做?

1 个答案:

答案 0 :(得分:1)

找到我的答案。我将使用HttpConfiguration

配置端点路由
public static class WebApiConfig
{   
        public static void Register(HttpConfiguration config)
        {
                config.Routes.MapHttpRoute(
                            name: "API TokenEndpoint",
                            routeTemplate: "services/newtoken/{grantType}",
                            defaults: new { controller = "Token" action="Post"},
                            constraints: null);
        }   
}