为什么getByEmail返回404未找到?

时间:2016-07-01 12:57:16

标签: c# asp.net-mvc rest asp.net-web-api getmethod

我有以下控制器和路线

   [HttpGet]
        [Route("getByEmail/{email:alpha}")]
        public IHttpActionResult Get(string email)
        {
            var user = _userLogic.GetUserByEmail(email);
            return Ok(user);
        }

但是当我打电话时

localhost/WebApp/api/user/getByEmail/fsd@sd

它返回404未找到

I've tried 
localhost/WebApp/api/user/getByEmail/?email=fsd@sd

但它可以得到所有 有人可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

这可能是因为您定义的route constraint :alpha要求您的参数仅匹配大写和小写字符。

由于您将要传递@,这将导致路由无法正确匹配,因此您将收到404错误。

只需删除约束即可按预期工作:

[Route("getByEmail/{email}")]