我在用户 Controller 中设置了以下路由:
[EnableCors("*", "*", "*")]
[RoutePrefix("api/users")]
[Authorize]
public class UserController : ApiController
{
[Route("")]
public IHttpActionResult Get()
{
}
[HttpGet]
[Route("{id:int}")]
public IHttpActionResult Get(int id)
}
[HttpPost]
[Route("validateUser")]
public IHttpActionResult ValidateUser()
{
}
[HttpPost]
[Route("verify/{identityId}/{emailAddress}")]
public void VerifyUserEmailAddress(string identityId, string emailAddress)
{
}
}
前三个路线工作得很好。但是第四次失败并返回 404。我正在使用 fiddler 进行调用:
http://localhost:39897/api/users/verify/asldkfj/jb@test.com (帖子被选中)
post 是否需要在正文中发送数据?任何人都可以看到我做错了什么以及为什么找不到验证路由吗?
最佳答案
电子邮件中的 .com
是问题所在。
当然这是一封有效的电子邮件,但 IIS 将带有文件扩展名的请求视为实际文件请求并尝试在磁盘上找到它。当找不到它时,您会收到 404 Not Found
如果您在请求中添加尾部斜杠 /
它应该可以工作。
即 http://localhost:39897/api/users/verify/asldkfj/jb@test.com/
关于c# - Webapi 2 属性路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38829348/