我试图在控制器上创建一个操作,该控制器将域限定的用户名作为参数。
public class AccountsController : ApiController
{
[HttpGet, Route("accounts/{username}")]
public IHttpActionResult Get(string username)
{
return Ok();
}
}
我可以执行HTTP GET /accounts/test%40testing
并获得OK回复。
当我尝试使用合格的用户名发出类似请求时,控制器上的操作不会被触发; HTTP GET /accounts/user%40testing.org
获得404回复。我可以看到请求进入应用程序的OWIN中间件,因此我确信它会将其从主机中转移到.NET代码中。
我假设Web API处理这些值的方式有些特殊,但我无法在MSDN文档中找到任何内容或提示如何处理此问题。
如何将这些值传递给动作?
答案 0 :(得分:1)
添加另一条路线。
foreach
如果找不到匹配的路由导致404,则期间会尝试将其路由到文件。因此,您需要显式创建一个带有句点的路由来捕获它。然后让方法中的逻辑将用户名和ext连接在一起并调用现有的逻辑。