Web API路由无法识别

时间:2013-11-26 19:17:29

标签: c# asp.net-web-api routes http-status-code-404

我有:

[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);
        }

当我尝试在Postman REST CLient中访问此URL时:

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

我得到了404。

我确实

configuration.MapHttpAttributeRoutes();

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

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:2)

正则表达式的 {32} 部分意味着正好是32个字符,但在您的请求中,部分Uri只有六个字符

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