2013-11-26 31 views
1

我:的Web API路线不承认

[RoutePrefix("teamone/players")] 

.......................... 
[HttpPost("{key:regex([A-Za-z0-9]{32})}/AccessToken", RouteName = "MakeToken")] 
     public HttpResponseMessage MakeToken(string key) 
     { 
      key = key + "5555"; 
      return new HttpResponseMessage(HttpStatusCode.OK); 
     } 

当我尝试访问此网址在邮差REST客户端:

http://localhost:4566/teamone/players/243445/AccessToken 

,我收到了404

我有

configuration.MapHttpAttributeRoutes(); 

我还缺少什么?同一控制器中的所有其他路由都可以正常工作。

+0

您是否使用MVC5的属性路由功能? – BgRva

回答

2

看起来你的正则表达式导致输入不匹配。还看起来你仍然在使用RC版本的Web API。我们现在已经公开了RTM版本的Web API,您应该计划升级到它。属性路由经历了从RC到RTM的重大变化。

以下一段代码可以帮助您确定您的正则表达式是否与输入匹配。如果它匹配,但web api不匹配,那么问题是与webapi,否则我认为你应该改变你的正则表达式。

Regex regex = new Regex("[A-Za-z0-9]{32}", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled); 
bool isMatch = regex.IsMatch("243445"); 
2

正则表达式的{32}部分是指恰好32个字符,但在你的请求URI的一部分是仅六个字符

也许你的意思是像{6,32}(意思是6到32个字符)?