title: Web API Url.Link always returns null
body: <p>I've the following setup in WebApiConfig</p>
  
  <pre><code>configuration.Routes.MapHttpRoute(
     name: "ConfirmEmailRoute",
     routeTemplate: "api/account/ConfirmEmail/{userId=userId}/{code=code}",
     defaults: new { userId = RouteParameter.Optional, code = RouteParameter.Optional }
  );
  </code></pre>
  
  <p>And this action in the controller</p>
  
  <pre><code>[RoutePrefix("api/account")]
  public class AccountController : BaseApiController
  {
  
      [AllowAnonymous]
      [HttpGet]
      [Route("ConfirmEmail/{userId=userId}/{code=code}", Name = "ConfirmEmailRoute")]
      public async Task&lt;IHttpActionResult&gt; ConfirmEmail(string userId = "", string code = "")
      {
          if (string.IsNullOrWhiteSpace(userId) || string.IsNullOrWhiteSpace(code))
          {
              ModelState.AddModelError("", "User Id and Code are required");
              return BadRequest(ModelState);
          }
  
          var result = await this.UserManager.ConfirmEmailAsync(userId, code);
  
          if (result.Succeeded)
          {
              return Ok("Email has been successfully confirmed");
          }
          else
          {
              return GetErrorResult(result);
          }
      }
  }
  </code></pre>
  
  <p>And I'm using the following to generate it's URL</p>
  
  <pre><code>Url.Link("ConfirmEmailRoute", new { userId = user.Id, code = code })
  </code></pre>
  
  <p>But this always return null.</p>
  
  <p>I've tried adding controller and Action as well like:</p>
  
  <pre><code>Url.Link("ConfirmEmailRoute", new { userId = user.Id, code = code, controller = "Account", Action = "ConfirmEmail" })
  </code></pre>
  
  <p>Isn't working either</p>
  
  <p>The parameter names are same, I don't see why it's not working!</p>