使用包含句点的路由参数

时间:2016-06-29 13:15:25

标签: iis asp.net-web-api

我试图在控制器上创建一个操作,该控制器将域限定的用户名作为参数。

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文档中找到任何内容或提示如何处理此问题。

如何将这些值传递给动作?

1 个答案:

答案 0 :(得分:1)

添加另一条路线。

foreach

如果找不到匹配的路由导致404,则期间会尝试将其路由到文件。因此,您需要显式创建一个带有句点的路由来捕获它。然后让方法中的逻辑将用户名和ext连接在一起并调用现有的逻辑。